《西游记》中“孙悟空拔毛变小猴”,孙悟空这种根据自己的形象克隆出多个身体的技巧,在面向对象软件设计领域就被称为“原型模式”,孙悟空是原型对象。
   原型模式的定义:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。

   通过克隆创建的对象是全新的对象,在内存中拥有新的地址的。

   许多软件提供的Ctrl+C和Ctrl+V就是原型模式的典型应用


   原型模式有两种:浅复制和深复制。

   浅复制中,原型对河和克隆对象的成员变量指向相同的内存地址。在浅复制中,当原型对象被复制时,只复制它本身和其中包含的值类型的成员变量,而引用类型的成员变量并没有复制。


                原型模式_Java

   深复制:无论原型对象的成员变量是值类型还是引用类型,都将复制一份给克隆对象。在深克隆中,除了对象本身被复制外,对象所包含的所有成员变量也将被复制。

              原型模式_Java_02


   原型模式的优点:1、提供新实例的创建效率 2、扩展性较好 3、产品复制通过封装在原型类中的克隆方法实现无须专门的工厂类来创
建产品 4、深克隆保存对象状态。可辅助实现撤销操作

   缺点:违背了开闭原则 2、每一层镀锡对应的类都必须支持深克隆。