原型模式适用于频繁产生某些类的对象,可以提升创建对象的性能,也使代码变得容易阅读。
实现要点:
1.定义一个接口Prototype,这个接口中定义一个clone方法。
2.定义一个类并实现Prototype接口及clone方法。
Java代码
public interface Product extends Cloneable { void setSize(int size); int getSize(); } public class Font implements Product{ int mSize; public Font(int size) { mSize = size; } @Override public void setSize(int size) { mSize = size; } @Override public int getSize() { return mSize; } @Override public Font clone(){ Font font = null; try { font = (Font)super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return font; } } public class Test { public static void main(String[] args) { Font font1 = new Font(5); System.out.println("font1.size = " + font1.getSize() ); Font font2 = font1.clone(); font2.setSize(6); System.out.println("font2.size = " + font2.getSize()); } }
需要注意的Java的Clone方法是种浅克隆(Shallow Clone),即对于复杂数据类型(数组,对象,链表)的属性等只clone引用,不会clone实体。如果需要深克隆(deep clone),需要自己实现。