zoukankan      html  css  js  c++  java
  • 最精简的代理设计模式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;

    }

  • 相关阅读:
    进入社会,我们要做哪些准备?
    2天玩转单反相机(第二讲)
    Google广告优化与工具
    Ext JS 4:模型剖析
    iphone开发教程(1) iOS大纲
    iPhone objectivec字符串类NSString的使用
    Ext JS 4倒计时:图形和图表
    Ext JS 4倒计时:开发者预览版
    WOSA介绍
    “苹果皮”与知识产权
  • 原文地址:https://www.cnblogs.com/iOS-mt/p/4114851.html
Copyright © 2011-2022 走看看