iOS常用的几种设计模式

2017-04-08  本文已影响0人  海耐射手

iOS开发过程中,有时候经常弄不清楚常用的几种开发模式,现有时间进行一下简单的总结和探讨:

下面先说一下设计模式都有哪几种:

1、单利模式

2、代理模式

3、工厂模式

4、观察者模式

一、单例模式

单例设计模式确保对于一个给定的类全局只创建一次。它通常采用懒加载的方式在第一次用到实例的时候再去创建它。

应用场景:确保程序运行期某个类,只有一份实例,用于进行资源共享控制。

优点:无论调用多少次有且仅有一个对象,类似全局变量,在整个工程中都可以使用。

二、代理模式

应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。

优点:1、如果delegate中的一个方法没有实现那么就会出现编译警告/错误

           2、协议必须在controller的作用域范围内定义

           3、在一个控制器中可以定义定义多个不同的协议,每个协议有不同的delegates

三、工厂模式

工厂模式:我们可能会在不同的地方去创建这个对象,那么我们可能需要写100句alloc 了,但是如果我们在创建对象的时候,需要在这些对象创建完之后,为它的一个属性添加一个固定的值,比方说都是某某学校的学生,那么可能有需要多些100行重复的代码了,那么,如果写一个-(void)createObj方法,把创建对象和学校属性写在这个方法里边,那么就是会省事很多,也就是说我们可以alloc 创建对象封装到一个方法里边,直接调用这个方法就可以了,这就是简单工厂方法

应用场景:客户端只知道传入工厂类的参数,对于如何创建对象的逻辑不必关心时。

优势:客户端可以直接消费产品,而不必关心具体产品的实现(消除了客户端直接创建产品对象的责任,实现了对责任的分割)。

不足:1、其集中了所有产品的创建逻辑,一旦不能正常工作,整个系统都会受到影响,而且当产品类别多结构复杂的时候,把所有创建工作放进一个工厂来,会使后期程序的扩展较为困难。

            2、要创建的类必须拥有同一个父类

            3、要创建的类在100个不同的地方所调用的方法必须一样

注意:项目初期,软件结构和需求都没有稳定下来时,不建议使用此模式,因为其劣势也很明显,增 加了代码的复杂度,增加了调用层次,增加了内存负担。所以要注意防止模式的滥用。

四、观察者模式 —— KVO

观察者模式:利用键值观察可以注册成为一个对象的观察者。这是一个对象与另外一个对象保持同步的一种方法,即当另外一种对象的状态发生改变时,观察对象马上作出反应。它只能用来对属性作出反应,而不会用来对方法或者动作作出反应

上一篇下一篇

猜你喜欢

热点阅读