`
cwlong
  • 浏览: 10556 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

总结 ﹣ 代理设计模式

 
阅读更多
注 : 文章不断更新,转载文章请加上作者

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开头







  • 大小: 75.3 KB
分享到:
评论

相关推荐

    设计模式自己总结一句话描述

    设计模式分为三大类: 创建型模式,共五种: 工厂方法模式、抽象工厂模式、单例模式、构建者模式、原型模式。 结构型模式,共七种: 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。...

    《Java设计模式》课程设计报告.docx

    用myeclipse开发的java设计模式课程设计,课题内容为西瓜工厂,包含四个设计模式,单例模式、代理模式、建造者模式和抽象工厂模式,有较好的图形界面,文档内附有完整代码,适用于新手学习。

    lua设计模式总结

    2、代理模式lua实现 3、外观模式lua实现 4、适配器模式lua实现 5、组合模式lua实现 6、桥接模式lua实现 7、享元模式lua实现 行为模式 1、策略模式lua实现 2、模板方法模式lua实现 3、观察者模式lua实现 4、状态模式...

    java23种设计模式总结

    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 桥接模式 ........

    设计模式学习笔记及其模式特点总结

    代理模式学习笔记、单例模式学习笔记、命令模式、原型模式、模式特点总结。 为个人对设计模式的理解,如果有理解不一致的不要砸砖啊

    C#面向对象设计模式纵横谈(视频与源码)

    讲 师:李建忠 上海祝成信息科技有限公司 高级培训讲师 MSDN特邀讲师 C#面向对象设计模式纵横谈(1):面向对象设计模式与原则 C#面向对象设计模式纵横谈(2):... C#面向对象设计模式纵横谈(25):设计模式总结

    设计模式笔记(包含所有设计模式)个人总结提炼笔记

    设计模式是一种解决软件设计问题的经验总结,是在软件开发过程中经过反复验证的最佳实践。设计模式提供了一套通用的解决方案,可以帮助开发人员更好地组织和设计代码,提高代码的可读性、可维护性和可扩展性。 设计...

    java中的设计模式,主要的设计模式

    2. 设计模式是一种设计经验的总结 3. 设计模式是用来解决某些场景下的某一类问题--------通用的解决方案 4. 有了设计模式之后,可以让代码更容易被理解,确保了复用性、可靠性、可扩展性 单例模式、工厂方法模式、...

    java23种设计模式

    java23种设计模式,每一种模式都有详细的讲解,很全面,如果你想深入了解一下java23种设计模式,这会非常适合你的哦!上传乃为百度云连接,失效请留言。 内容: 001策略模式! N. B8 ~' D! f9 j+ g0 I 002观察者模式 ...

    01.Java设计模式之 单例模式.pdf

    设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计...

    设计模式可复用面向对象软件的基础.zip

    本书设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用...

    设计模式 GOF 23

    本书设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用...

    设计模式--C++

    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 总结文档

    设计模式.doc 总结文档,包含:单例多例,工厂方法模式,适配置器模式,包装设计模式,代理模式 15种常用等

    免费开源!!Java 23种设计模式全归纳

    设计模式(Design Pattern)是一套被反复使用、大多数人精美的、经过分类编写目的、代码设计经验的总结。 设计模式分为清晰类型,共23种: 创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。...

    设计模式(.PDF)

    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种设计模式知识总结

    23种设计模式知识总结,单例,工厂、代理、适配器、观察者、享元等等,以及设计原则

    GOLF设计模式(C++语言版)

    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 设计模式怎样解决...

Global site tag (gtag.js) - Google Analytics