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;

    }

  • 相关阅读:
    [转] Web前端优化之 Server篇
    [转] Web前端优化之 内容篇
    [学习笔记] Web设计过程中该做和不该做的
    web前端性能优化
    jQuery代码片段
    socket.io
    ajax阻塞UI线程
    前端面试题整理
    nodejs之async异步编程
    jquery源码笔记
  • 原文地址:https://www.cnblogs.com/iOS-mt/p/4114851.html
Copyright © 2011-2022 走看看