1.原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象
2.类型:对象创建型模式
3.类图
4.各部分说明
Prototype,抽象原型类
声明克隆方法的接口。
是所有具体原型类的公共父类。
可以是抽象类也可以是接口,甚至还可以是具体实现类。
ConcretePrototype,具体原型类
Prototype的具体原型类。
实现在抽象原型类中声明的克隆方法,在克隆方法中返回自己的一个克隆对象。
Client,客户类
通过调用该对象的克隆方法即可让一个原型对象克隆自身从而创建一个新的对象,得到多个相同的对象。
5.实现
package 原型模式;
public class PrototypePattern {
public static void main(String[] args) {
ConcretePrototype cp = new ConcretePrototype();
for (int i = 0; i < 5; i++) {
ConcretePrototype clonecp = (ConcretePrototype)cp.clone();
clonecp.show();
}
}
}
interface Prototype{
public Prototype clone();
}
class ConcretePrototype implements Prototype,Cloneable{
@Override
public Prototype clone() {
ConcretePrototype prototype = null;
try{
prototype = (ConcretePrototype)super.clone();
}catch(Exception e){
System.out.println(e.getMessage());
}
return prototype;
}
public void show(){
System.out.println("ConcretePrototype1:{}" + this.toString());
}
}
6.优点
性能优良。原型模式是在内存二进制流的拷贝,要比直接new一个对象性能好很多,特别是要在一个循环体内产生大量的对象时,原型模式可以更好地体现其优点。
逃避构造函数的约束,拷贝时构造函数不会被执行