由于本人现在所使用的语言主要是golang,所以后面的代码主要使用golang编写。语言实现应该不是障碍,主要是理解每种设计模式它的思想。
如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型)进行复制(或者叫拷贝)的方式来创建新对象,以达到节省创建时间的目的。这种基于原型来创建对象的方式就叫作原型设计模式(Prototype Design Pattern),简称原型模式。
但在该对象外部复制对象会存在以下几个问题:
- 对象字段过多,复制过于复杂
- 对象有私有变量外部不可见
- 对象发生变化时,外部的复制函数也需要变化
Prototype模式:用原型实例指定创建对象的种类,并通过拷贝这些原型,创建新的对象。原理是原型类对象提供一个拷贝自己的方法,要发起创建的对象调用该原型类的方法实现创建。