• 最精简的代理设计模式demo


    1,协议文件 

    @protocol NursePtotocol <NSObject>

     //保姆的协议方法

    - (void)startToAmuseBaby;

     @end

     2,管理类(使用类)

    @interface Baby : NSObject

    { //1,定义实例变量,即谁遵守协议,是对象。也就是说:谁充当保姆角色。《定义》

        id <NurseProtocol> delegate;

    }

    - (void)setDelegate:(id)newDelegate;

    - (id)delegate;

    - (void)crying;

    @end

    @implementation Baby

    //设置访问方法

    - (void)setDelegate:(id)newDelegate

    { delegate = newDelegate;//2,赋值代理。即:让谁当保姆。《赋值》}

    - (id)delegate

    { return delegate;}

    //孩子的行为方法(使用代理的方法)

    - (void)crying

    { NSLog(@"孩子哭了");

        //4,(管理类) 使用协议方法《使用》

        [self.delegate startToAmuseBaby];

    }

    @end

    3,充当代理类

    @interface Women : NSObject

    @end

    @implementation Women

    - (void)startToAmuseBaby

    {//3,代理类,《实现》<委托方法,需要设计者手写代码的地方,也是苹果暴露出的委托方法(UI中常用)>

        NSLog(@"保姆已经去看孩子了");}

    @end

    int main(int argc, const char * argv[])

    {

        @autoreleasepool {

            Baby *baby = [[Baby alloc] init];

            Women *women = [[Women alloc] init];

            //调用setter方法,赋值代理:让women遵从nurse协议

            [baby setDelegate:women];

            [baby crying];

                }

        return 0;

    }

  • 相关阅读:
    Spring Boot2(九):整合Jpa的基本使用
    Spring Boot2(八):性感banner,在线发牌
    Spring Boot2(七):拦截器和过滤器
    我为什么要写作
    代码整洁之道
    redis-缓存穿透和缓存击穿
    云计算的三种服务模式
    java-泛型
    java-注解
    java-反射
  • 原文地址:https://www.cnblogs.com/iOS-mt/p/4114851.html
Copyright © 2020-2023  润新知