IOS的设计模式

IOS设计模式之原型模式

2017-05-15  本文已影响0人  清水一心

何为原型模式?

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。如图:

Paste_Image.png

使用场景

* 需要创建的对象应独立于其类型与创建方式
* 要实例化的类是在运行时决定的
* 不想要与产品层次相对应的工厂层次
* 不同类的实例间的差异仅是状态的若干组合
* 复制已有的组合对象并对副本进行修改会更加容易

浅复制与深复制

深复制:新创建的对象会在内存中开辟新的空间,而把被拷贝对象的值拷贝过来
浅复制:新创建的对象的指针与原对象的指针指向相同的内存空间,并有相同的值

如图:

Paste_Image.png

在Cocoa Touch框架中,为NSObject的派生类提供了实现深复制的协议。NSObject的子类,需要实现NSCopying协议及其方法。
* -(id) copyWithZone:(NSZone*)zone;

【扩展】

NSString属性什么时候用copy,什么时候用strong?
iOS 浅谈:深.浅拷贝与copy.strong
iOS开发——深拷贝与浅拷贝详解
iOS深浅拷贝(纠错)

优缺点

优点:

1、如果创建新的对象比较复杂时,可以利用原型模式简化对象的创建过程,同时也能够提高效率。
2、可以使用深克隆保持对象的状态。
3、原型模式提供了简化的创建结构

缺点

1、在实现深克隆的时候可能需要比较复杂的代码。
2、需要为每一个类配备一个克隆方法,而且这个克隆方法需要对类的功能进行通盘考虑,这对全新的类来说不是很难,但对已有的类进行改造时,不一定是件容易的事,必须修改其源代码,违背了“开闭原则”。
上一篇下一篇

猜你喜欢

热点阅读