定义
用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象
原型模式角色
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
原著是一个有趣的人,若有侵权,请通知删除
还没有人抢沙发呢~