设计模式【1】:原型模式【创建对象】

来源:互联网 发布:淘宝女装销量 编辑:程序博客网 时间:2024/05/01 00:48

面试期间,总是有面试官问到关于设计模式的问题,虽然我们在写程序的时候不经意间会用到设计模式,但是在面试管面前我们还是说不出,在这我把看到的一些设计模式记录下来,加深自己的印象,也为了更好的运用这些设计模式。

【原型模式】

原型模式的官方定义:“使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象”。简单来理解就是根据这个原型创建新的对象,这种创建是指深复制,得到一份新的内存资源,而不是一个新的指针引用。

官方定义总是这么坑爹,让人那么琢磨不透,其实理解了,你会说,就这也算是一个设计模式。那么咱们就白话说这种设计模式:原型模式就是针对深复制来说的,定义可以这么去理解,

一个对象  Dog * dog = new Dog; 那么你想得到一个dog1 .可以这样来:Dog *dig1 = [dog copy];那么现在dog和dog1是两个独立的个体

这就是所谓的原型模式,虽然看到后总感觉没必要弄成一个设计模式,但是还要感谢这个设计模式的提出者。

【关于深复制说两句】

像NSString、NSDictionary这些类,本身已经实现了copyWithZone:(NSZone *)zone方法,直接使用如[NSString copy]调用即可。在复制后得到的副本,又可以分为可变副本(mutable copy)和不可变副本(immutable copy)。通常在NSCopying协议规定的方法copyWithZone中返回不可变副本,在NSMutableCopying的mutableCopyWithZone方法中返回可变副本,然后调用copy和mutableCopy方法来得到副本。


1 0
原创粉丝点击