java设计模式笔记

设计模式五--原型模式

2018-09-26  本文已影响17人  朽木亦自雕

定义

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

原型模式角色

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一个对象然后由工厂方法提供给调用者

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

上一篇 下一篇

猜你喜欢

热点阅读