iOS开发被常用的设计模式

 

常用之设计模式
(一)代理模式
采取场景:当一个接近的一些意义要由别的类来实现,但是同时未确定具体会是孰类实现。
优势:解耦合
快速原则:开放-封闭原则
实例:tableview的 数据源delegate,通过跟protocol的相当,完成委托诉求。
列表row个数delegate
自从定义的delegate

(二)观察者模式
使场景:一般也model层对,controller和view进行的通报方式,不关注哪个去接,只当发布消息。
优势:解耦合
快原则:接口隔离原则,开放-封闭原则
实例:Notification通知中心,注册通知中心,任何职务好发送信息,注册观察者的对象可以接收。
kvo,键值对反通知的观察者,平时为主没因此了。

(三)MVC模式
动场景:是千篇一律着生古老的设计模式,通过数量模型,控制器逻辑,视图显示将应用程序进行逻辑划分。
优势:使系统,层次分明,职责明确,易于维护
高效原则:对扩大开放-对修改封闭
实例:model-即数据模型,view-视图展示,controller进行UI展现和数量交互的逻辑控制。

(四)单例模式
行使场景:确保程序运行期某个类,只发同份实例,用于开展资源共享控制。
优势:使用简单,延时求值,易于跨模块
很快原则:单一任务规范
实例:[UIApplication sharedApplication]。
注意事项:确保使用者只能通过
getInstance方法才能够获得,单例类的绝无仅有实例。
java,C++中要其没有国有构造函数,私有化并掩盖其构造函数。
object c中,重写allocWithZone方法,保证即使用户用
alloc方法直接创造单例类的实例,
回的也罢仅仅是以此单例类的绝无仅有静态变量。

(五)策略模式
以场景:定义算法族,封装起来,使他们中间可相互替换。
优势:使算法的变通独立于采用算法的用户
速原则:接口隔离原则;多为此结合,少用连续;针对接口编程,而休实现。
实例:排序算法,NSArray的sortedArrayUsingSelector;经典的鸭子会叫,会飞案例。
注意事项:1,剥离类中好变动之作为,通过做的主意放置抽象基类
2,变化的表现抽象基类为,所有可变换弯之父类
3,用户类的最终实例,通过注入行为实例的计,设定好变行为
防范了继续行为艺术,导致无关行为污染子类。完成了策略封装和可替换性。

(六)工厂模式
动用场景:工厂方式创造类的实例,多与proxy模式配合,创建而替换代理类。
优势:易于替换,面向抽象编程,application只同虚无工厂及容易变类的共性抽象类闹调用关系。
快捷原则:DIP依赖倒置原则
实例:项目配置环境被凭借多独例外品类的数据库时,需要采取工厂配合proxy完成易用性替换
注意事项:项目初期,软件结构和需求都没稳定下来时,不建议利用这个模式,因为那劣势也老明确,

加了代码的复杂度,增加了调用层次,增加了内存负担。所以若小心防护模式的滥用。

单例会有啊坏处?
要害优点:
1、提供了针对性唯一实例的受控访问。
2、由于在网内存中只存在一个对象,因此得以省系统资源,对于有些索要反复创建及销毁之靶子单例模式的可以增进系统的性质。
3、允许而转换多少的实例。
 
最主要缺点:
1、由于单利模式被无抽象层,因此单例类的壮大有坏死的窘迫。
2、单例类的任务过重,在肯定程度达到违反了“单一任务规范”。
3、滥用单例将牵动一些负面问题,如为省资源将数据库连接池对象设计为的单例类,可能会见造成共享连接池对象的先后过多如果产出连续池溢出;如果实例化的对象长日子不深受以,系统会认为是废品要被回收,这将促成对象状态的散失。