标签:格式 img 对象 bsp opera 两种 实现 nbsp none
概念
通过一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。
有两种表现形式
1 简单形式
1 客户角色:客户端提出创建对象的请求,
2 抽象原型角色:抽象角色,通常有一个Java接口或Java抽象类实现,给出具体原型所需要接口
3 具体原型 被复制的对象,实现抽象原型角色
public class Client { 3 4 private Prototype prototype; 5 6 public void operation(Prototype example) { 7 Prototype p =(Prototype)example.clone(); 8 } 9 10 } 11 //抽象原型 12 interface Prototype extends Cloneable{ 13 public Object clone(); 14 } 15 16 class ConcretePrototype implements Prototype{ 17 public Object clone(){ 18 try{ 19 return super.clone(); 20 }catch (CloneNotSupportedException e) { 21 return null; 22 } 23 } 24 }
通常Java语言中实现clone方法的办法就是这种形式的原始模型模式实现
2 登记形式的原始模型
interface Prototype extends Cloneable{ Object clone(); } class ConcretePrototype implements Prototype{ public synchronized Object clone(){ Prototype temp = null; try { temp = (Prototype) super.clone(); } catch (CloneNotSupportedException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { return temp; } } } class PrototypeManager{ private Vector<Prototype> objects = new Vector<>(); void add(Prototype p) { objects.add(p); } Prototype get(int i){ return objects.get(i); } int size() { return objects.size(); } } class Client{ private PrototypeManager manager; private Prototype pro; public void registerPro(){ Prototype copy = (Prototype) pro.clone(); manager.add(copy); } }
这两种形式各有长短处:
标签:格式 img 对象 bsp opera 两种 实现 nbsp none
原文地址:http://www.cnblogs.com/whesuanfa/p/7389660.html