Prototype模式
根据实例原型,实例模型来生成新的实例 ,通过复制来生成实例
-
不指定类名的前提下生成实例
-
根据现有的实例来生成新的实例
clone Cloneable
出场角色
-
Prototype(原型)
定义用于复制现有实例来生成新实例的方法
-
ConcretePrototype(具体的原型)
实现复制现有实例并生成新实例的方法
-
Client(使用者)
使用复制实例的方法生成新的实例
interface Product extends Clonable{ public abstract void use(String s); public abstract Product createClone(); } class Manager{ private HashMap showcase = new HashMap(); public void register(String name,Product proto){ shwocase.put(name,proto); } public Product create(String protoname){ Product p = (Product) showcase.get(protoname); return p.createClone(); } } class MessageBox implements Product{ private char decochar; public MessageBox(char decochar){ this.decochar = decochar; } public void use(String s){ int length = s.getBytes().length; for(int i = 0 ; i < length + 4; i++){ System.out.print(decochar); } System.out.println(""); System.out.println(decochar +" " +s+" " + decochar); for(int i = 0 ;i<length+4;i++){ System.out.print(decochar); } System.out.println(""); } public Product createClone(){ Product p = null; try{ //clone p=(Product)clone(); }catch(CloneNotSupportedException e){ e.printStackTeace(); } return p; } }