原型模式(Prototype)定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。
在Java中,通过实现Cloneable接口中的clone()方法,可以方便的实现原型模式,具体代码如下:
原型类:
1 public class Realizetype implements Cloneable { 2 public int x; 3 public Object obj; 4 5 Realizetype() { 6 System.out.println("具体原型创建成功!"); 7 } 8 9 public Realizetype(int x, Object obj) { 10 this.x = x; 11 this.obj = obj; 12 } 13 14 public Object clone() throws CloneNotSupportedException { 15 System.out.println("具体原型复制成功!"); 16 return (Realizetype) super.clone(); 17 } 18 }
调用方式:
1 public class Client { 2 public static void main(String[] args) throws CloneNotSupportedException { 3 Realizetype obj1 = new Realizetype(20, "张三"); 4 Realizetype obj2 = (Realizetype) obj1.clone(); 5 System.out.println("obj1 == obj2?" + (obj1 == obj2)); 6 7 System.out.println("obj1.x == obj2.x?" + (obj1.x == obj2.x)); 8 9 System.out.println("obj1.obj == obj2.obj?" + (obj1.obj == obj2.obj));//说明是浅拷贝 10 } 11 }
执行结果:
上面第9行,执行结果是true,说明这种方式复制的对象属于浅拷贝。