博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最精简的代理设计模式demo - 保姆看孩子
阅读量:5128 次
发布时间:2019-06-13

本文共 970 字,大约阅读时间需要 3 分钟。

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;

}

转载于:https://www.cnblogs.com/iOS-mt/p/4114851.html

你可能感兴趣的文章
利用IP地址查询接口来查询IP归属地
查看>>
HTML元素定义 ID,Class,Style的优先级
查看>>
构造者模式
查看>>
http和https的区别
查看>>
Hbuild在线云ios打包失败,提示BuildConfigure Failed 31013 App Store 图标 未找到 解决方法...
查看>>
找到树中指定id的所有父节点
查看>>
今天新开通了博客
查看>>
AS3优化性能笔记二
查看>>
ElasticSearch(站内搜索)
查看>>
4----COM:a Generative Model for group recommendation(组推荐的一种生成模型)
查看>>
UVA 11137 - Ingenuous Cubrency
查看>>
js阻止事件冒泡的两种方法
查看>>
Java异常抛出
查看>>
[SQL Server 系] T-SQL数据库的创建与修改
查看>>
74HC164应用
查看>>
变量声明和定义的关系
查看>>
Wpf 之Canvas介绍
查看>>
linux history
查看>>
jQuery on(),live(),trigger()
查看>>
Python2.7 urlparse
查看>>