原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
场景还原(找工作准备简历):
假设没有打印设备,因此需手写简历,这些简历的内容都是一样的。这样有个缺陷,如果要修改简历中的某项,那么所有已写好的简历都要修改,工作量很大。
随着科技的进步,出现了打印设备。我们只需手写一份,然后利用打印设备复印多份即可。如果要修改简历中的某项,那么修改原始的版本就可以了,然后再复印。原始的那份手写稿相当于是一个原型,有了它,就可以通过复印(拷贝)创造出更多的新简历。这就是原型模式的基本思想。
UML类图阐述:
由于克隆需要一个原型,而下面的类图中Prototype就是这个原型,Prototype定义了克隆自身的Clone接口,由派生类进行实现,而实现原型模式的重点就在于这个Clone接口的实现。ConcretePrototyp类继承自Prototype类,并实现Clone接口,实现克隆自身的操作;同时,在ConcretePrototype类中需要重写默认的复制构造函数,供Clone函数调用,Clone就是通过在内部调用重写的复