设计模式五--原型模式
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一个对象然后由工厂方法提供给调用者
参考资料:设计模式之禅(二)