总结 ﹣ 代理设计模式
- 博客分类:
- 总结
注 : 文章不断更新,转载文章请加上作者
1 . 什么是(代理模式)?
2 . 为什么要有这种(代理模式)设计思想?
3 . (代理模式)这种设计模式是怎么样的?
-> 开发中,尽量不建议用父子关系来描述层次结构.
--> 同样的代码,不能利用父子关系关系去描述层次结构的时候,想拿到父层怎么办?
有这样一种思想: 自己创建一个属性去描述父层,(也就是将其他类,控制器等指向自己中的某一个属性, 用这个属性代表其他类,或者某个控制器)
---> 上面的设计方法并不好 , 不好的地方在于.
* 代码耦合性太强 : 两个类的东西,都分离不开了, 因为self自己的某个属性是其他类,那么
假如这个(控制器)没有了, 那么自己的mainView属性也空了, 整套代码就是废的.
又有一种思想,将自定义view的中的某个成员作为属性描述:
上面的代码,固然也可以实现了,自定义的view拿到 其他类,控制器的view,
---> 上面的设计方法同样并不好 , 不好的地方在于.
* 自己的控件不应该拿出来,让别人监听 --> [myView.downloadBtn addTarget:self action:@selector(download:) forControlEvents:UIControlEventTouchUpInside];
自己的按钮不应该拿出来让控制器去监听
* 这个自定义的view将自己内部的控件暴露了出来 , 谁用了这个控件,假如有一天这个自定义的view不在了, 这个属性也不在了,那么谁用了这个属性,谁的代码就废了
其实就是, 一个自定义的View里面有个按钮,然后点击这个按钮,让其他的控制器,或者其他的View去做事情的时候,就需要用代理 --谁适合做得事情,就应该交给谁去做(代理)
1. 当一个对象想监听另外一个对象的状态和里面发生了什么,用代理
2. 或者说一个对象或者一个控件内部发生状态的改变想通知其他对象或者控件用代理
设计原则:
******* 1. 一个独立的自定义view,不能跟控制器有半点联系
******* 2. 自定义的view,不应该将自己内部的东西暴露出来
******* 3. 谁适合做得事情,就应该交给谁去做(代理)
细节:
******* 1. 协议名称一定要以控件名开头
******* 2. 协议方法建议加上@optional, 方法可选
******* 3. 代理方法建议用view开头
1 . 什么是(代理模式)?
2 . 为什么要有这种(代理模式)设计思想?
3 . (代理模式)这种设计模式是怎么样的?
-> 开发中,尽量不建议用父子关系来描述层次结构.
//利用superview 找到父控件, 这样写代码扩展性不好,假如层次关系改变,这句代码就坏了. //以后层次结构改变.有可能就变成self.superview.superview 等等去找父层 [self.superview addSubview:label]
--> 同样的代码,不能利用父子关系关系去描述层次结构的时候,想拿到父层怎么办?
有这样一种思想: 自己创建一个属性去描述父层,(也就是将其他类,控制器等指向自己中的某一个属性, 用这个属性代表其他类,或者某个控制器)
//定义一个属性,去描述某个控制器 @property (nonatomic, weak) UIView *mainView; //调用自己的属性mainView, 去控制那个控制器的东西 [self.mainView addSubview:label] ;
---> 上面的设计方法并不好 , 不好的地方在于.
* 代码耦合性太强 : 两个类的东西,都分离不开了, 因为self自己的某个属性是其他类,那么
假如这个(控制器)没有了, 那么自己的mainView属性也空了, 整套代码就是废的.
又有一种思想,将自定义view的中的某个成员作为属性描述:
//将内部控制作为自定义View的一个属性 @property (weak, nonatomic) IBOutlet UIButton *downloadBtn; //然后利用addTarget方法,为这个属性添加监视器. [myView.downloadBtn addTarget:self action:@selector(download:) forControlEvents:UIControlEventTouchUpInside];
上面的代码,固然也可以实现了,自定义的view拿到 其他类,控制器的view,
---> 上面的设计方法同样并不好 , 不好的地方在于.
* 自己的控件不应该拿出来,让别人监听 --> [myView.downloadBtn addTarget:self action:@selector(download:) forControlEvents:UIControlEventTouchUpInside];
自己的按钮不应该拿出来让控制器去监听
* 这个自定义的view将自己内部的控件暴露了出来 , 谁用了这个控件,假如有一天这个自定义的view不在了, 这个属性也不在了,那么谁用了这个属性,谁的代码就废了
其实就是, 一个自定义的View里面有个按钮,然后点击这个按钮,让其他的控制器,或者其他的View去做事情的时候,就需要用代理 --谁适合做得事情,就应该交给谁去做(代理)
1. 当一个对象想监听另外一个对象的状态和里面发生了什么,用代理
2. 或者说一个对象或者一个控件内部发生状态的改变想通知其他对象或者控件用代理
设计原则:
******* 1. 一个独立的自定义view,不能跟控制器有半点联系
******* 2. 自定义的view,不应该将自己内部的东西暴露出来
******* 3. 谁适合做得事情,就应该交给谁去做(代理)
细节:
******* 1. 协议名称一定要以控件名开头
******* 2. 协议方法建议加上@optional, 方法可选
******* 3. 代理方法建议用view开头
发表评论
-
发现控件设置了没显示的几种情况
2015-08-13 11:41 372有时候,明明frame和数据都设置了,但是控件却没显示出来,总 ... -
关于Tag的使用
2015-08-03 21:48 197很多时候,tag用作标示,可以通过标示去寻找例如一个父控件中里 ... -
总结 ﹣ UITableView (性能优化①)
2015-07-28 22:08 358注 : 文章不断更新,转载文章请加上作者 总结 ﹣ UI ... -
总结 ﹣ UITableViewCell
2015-07-27 19:30 268注 : 文章不断更新,转载文章请加上作者 UITableV ... -
总结 ﹣ UITableView
2015-07-26 20:16 235注 : 文章不断更新,转载文章请加上作者 要实现表格数据形 ... -
总结 ﹣ IOS的动画
2015-07-26 11:14 403注 : 文章不断更新,转载 ... -
总结 - 控制沙盒(NSFileManager 文件操作)④
2015-07-25 10:23 383注 : 文章不断更新,转载文章请加上作者 NSfIleMa ... -
总结 ﹣ 查看真机的沙盒 ③
2015-07-21 21:56 410前面 总结 ﹣ 沙盒 ... -
总结 ﹣ 获取沙盒目录 ②
2015-07-21 21:55 303注 : 文章不断更新,转载文章请加上作者 总结 ... -
storyboard常用属性总结
2015-07-20 18:01 256注 : 文章不断更新,转载文章请加上作者 View ... -
总结 ﹣ 沙盒机制(SandBox)①
2015-07-20 15:56 284iOS APP可以在自己的沙盒里读写文件,但 ... -
使用xib封装一个自定义view
2015-07-15 17:51 500使用xib封装一个自定义view步骤 1.新建一个继承自U ...
相关推荐
设计模式分为三大类: 创建型模式,共五种: 工厂方法模式、抽象工厂模式、单例模式、构建者模式、原型模式。 结构型模式,共七种: 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。...
用myeclipse开发的java设计模式课程设计,课题内容为西瓜工厂,包含四个设计模式,单例模式、代理模式、建造者模式和抽象工厂模式,有较好的图形界面,文档内附有完整代码,适用于新手学习。
2、代理模式lua实现 3、外观模式lua实现 4、适配器模式lua实现 5、组合模式lua实现 6、桥接模式lua实现 7、享元模式lua实现 行为模式 1、策略模式lua实现 2、模板方法模式lua实现 3、观察者模式lua实现 4、状态模式...
java23种设计模式总结 . 设计模式 1.1 创建型模式 1.1.1 工厂方法 1.1.2 抽象工厂 1.1.3 建造者模式 .. 1.1.4 单态模式 .. 1.1.5 原型模式 . 1.2 结构型模式 ... 1.2.1 适配器模式 1.2.2 桥接模式 ........
代理模式学习笔记、单例模式学习笔记、命令模式、原型模式、模式特点总结。 为个人对设计模式的理解,如果有理解不一致的不要砸砖啊
讲 师:李建忠 上海祝成信息科技有限公司 高级培训讲师 MSDN特邀讲师 C#面向对象设计模式纵横谈(1):面向对象设计模式与原则 C#面向对象设计模式纵横谈(2):... C#面向对象设计模式纵横谈(25):设计模式总结
设计模式是一种解决软件设计问题的经验总结,是在软件开发过程中经过反复验证的最佳实践。设计模式提供了一套通用的解决方案,可以帮助开发人员更好地组织和设计代码,提高代码的可读性、可维护性和可扩展性。 设计...
2. 设计模式是一种设计经验的总结 3. 设计模式是用来解决某些场景下的某一类问题--------通用的解决方案 4. 有了设计模式之后,可以让代码更容易被理解,确保了复用性、可靠性、可扩展性 单例模式、工厂方法模式、...
java23种设计模式,每一种模式都有详细的讲解,很全面,如果你想深入了解一下java23种设计模式,这会非常适合你的哦!上传乃为百度云连接,失效请留言。 内容: 001策略模式! N. B8 ~' D! f9 j+ g0 I 002观察者模式 ...
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计...
本书设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用...
本书设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用...
1.1 什么是设计模式 2 1.2 Smalltalk MVC 中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象...
本书结合设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好、表达清楚的软件设计模式,这些模式在实用环境下特别...
设计模式.doc 总结文档,包含:单例多例,工厂方法模式,适配置器模式,包装设计模式,代理模式 15种常用等
设计模式(Design Pattern)是一套被反复使用、大多数人精美的、经过分类编写目的、代码设计经验的总结。 设计模式分为清晰类型,共23种: 创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。...
1.1 什么是设计模式 2 1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象...
23种设计模式知识总结,单例,工厂、代理、适配器、观察者、享元等等,以及设计原则
1.1 什么是设计模式 2 1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 ...
最出名的设计模式,语言诙谐明了。 目 录 序言 前言 读者指南 第1章 引言 1 1.1 什么是设计模式 2 1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决...