创建型(3)原型模式

1、原型模式

传统方式
优点:比较好理解,简单易操作。
缺点:在创建新的对象时,总是需要重新获取原始对象的属性,如果创建的对象比较复杂时,效率较低。
总是需要重新初始化对象,而不是动态地获取对象运行时的状态,不够灵活。于是引出了原型模式。
基本介绍
1、原型模式(prototype模式)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象
2、原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道创建的细节。
3、工作原理是:通过一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它自 己来实施创建,即对象.clone()
4、形象的理解:孙大圣拔出猴毛,变出其它孙大圣。
思路**
java中Object类是所有类的根类,Object类提供了一个clone()方法,该方法可以将一个java对象复制一份。但是需要实现clone的java类必须要实现一个接口Cloneable,该接口表示该类能够复制且具有复制的能力=》原型模式。

两种克隆方式

详细代码可参考笔记 【java 深浅克隆、list、对象 等】
1、实现 clone()
2、实现对象的序列化

优点
1、创建对象比较复杂时,可以利用原型模式简化对象的创建过程,同时提高效率。
2、不用重新初始化对象,而是动态地获得对象运行的状态
3、如果原始对象发生变化(增加或者减少属性),其他克隆对象也会发生相应的变化,无需修改代码
缺点
1、实现深克隆的时候需要比较复杂的代码
2、需要为每一个类配备一个克隆方法,这对全新的类来说不是很难,但是对已有的类进行改造时,需要修改其原代码,违背了ocp原则。