美文网首页IOS的设计模式
IOS设计模式之原型模式

IOS设计模式之原型模式

作者: 清水一心 | 来源:发表于2017-05-15 15:59 被阅读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、需要为每一个类配备一个克隆方法,而且这个克隆方法需要对类的功能进行通盘考虑,这对全新的类来说不是很难,但对已有的类进行改造时,不一定是件容易的事,必须修改其源代码,违背了“开闭原则”。
    

    相关文章

      网友评论

        本文标题:IOS设计模式之原型模式

        本文链接:https://www.haomeiwen.com/subject/onhqxxtx.html