标签:
原型模式通过给出一个原型对象来指定所有创建对象的类型,然后复制原型对象创建出更多同类型的对象,其主要用于对象的复制。
原型模式核心是原型类Prototype,一个原型类通常要:
示例:
//原型 interface Prototype { void setSize(int x); void printSize(); } // 一个具体类 class A implements Prototype, Cloneable { private int size; public A(int x) { this.size = x; } @Override public void setSize(int x) { this.size = x; } @Override public void printSize() { System.out.println("Size: " + size); } @Override public A clone() throws CloneNotSupportedException { return (A) super.clone(); } } //需要很多类似的对象进行测试 public class PrototypeTest { public static void main(String args[]) throws CloneNotSupportedException { A a = new A(1); for (int i = 2; i < 10; i++) { Prototype temp = a.clone(); temp.setSize(i); temp.printSize(); } } }
深拷贝和浅拷贝:
原型模式的优点及使用场景:
使用原型模式复制对象不会调用类的构造方法,因为对象的复制是通过Object类的clone方法来完成的——它是直接在内存中复制数据。
注意单例模式和原型模式一起使用会产生问题!
按照约定,实例的克隆应该通过调用super.clone方法获取,这样有助于克隆对象的不变性(不是必须)。
标签:
原文地址:http://www.cnblogs.com/tianex/p/5097394.html