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

【原型模式】

原型模式的官方定义:“使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象”。

简单来理解就是依据这个原型创建新的对象,这样的创建是指深复制,得到一份新的内存资源。而不是一个新的指针引用。

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

一个对象  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方法来得到副本。