纵有疾风起
人生不言弃

设计模式五–原型模式

定义

用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象

原型模式角色

java中内置克隆机制(Object.clone()方法),想要一个类支持克隆,只需要实现Coneable接口,并且重写clone方法

1:客户角色(Client)
该角色提出创建对象的请求

public class Client{  public void operation(Prototype example){    Prototype p = example.clone();  }}

2:抽象原型角色(Prototype)
该角色是一个抽象角色,实现给出所有具体原型类所需的接口

public interface Prototype extends  Cloneable{  //克隆方法  Prototype clone();}

3:具体原型(ConcretePrototype)
该角色是被复制的对象,必须实现抽象原型接口

public class ConcretePrototype implements Prototype{  public Prototype clone(){    try{      return (Prototype) super.clone();      }catch(Exception e){      e.printStackTrace();      return null;    }  }}

优点

1:性能优良,二进制复制性能优于new一个新对象
2:可以逃避构造函数的约束,直接在内存中复制

使用场景

1:资源优化场景,类初始化的时候加载的资源
2:性能和安全优化的场景,new对象会产生非常繁琐的数据准备或者访问权限
3:一个对象多个修改者的使用场景
实际项目中,一般原型模式配合工厂模式,clone一个对象然后由工厂方法提供给调用者

参考资料:设计模式之禅(二)

文章转载于:https://www.jianshu.com/p/de0cd0047f67

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » 设计模式五–原型模式
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录