设计模式学习

使程序运行更高效——原型模式

2018-05-31  本文已影响6人  青峰星宇

原型模式定义(正式难懂):

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

原型模式的使用场景:

1)类初始化需要消耗非常多的资源,这个资源包括数据、硬件资源等,通过原型复制避免这些消耗。

2)通过new产生一个对象需要非常繁琐的数据准备或者访问权限,这时可以使用原型模式。

3)一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式复制多个对象供调用者使用,即保护性拷贝。

当然,我们再使用时要注意,通过实现Cloneable接口的原型模式在调用clone函数构造实例时并不一定比通过new操作速度快,只有当通过new构造对象较为耗时或者说成本较高时,通过clone方法才能够获得效率上的提升。实现原型模式也不一定非要实现Cloneable接口,也有其他方式实现。

原型模型的通俗易懂解释:

原型模型本质上就是对象拷贝,容易出现的问题就是深拷贝、浅拷贝。使用原型模式可以解决构造复杂对象的资源消耗问题,能够在某些场景下提升创建对象的效率。还有一个重要的用途就是保护性拷贝,也就是某个对象对外可能是只读的,为了防止外部对这个只读对象修改,通常可以通过返回一个对象拷贝的形式实现只读的限制。

原型模型的优缺点:

优点:

    原型模式是在内存中二进制流的拷贝,要比直接new一个对象性能好很多,特别是要在一个循环体内产生大量的对象时,原型模式可以更好地体现其优点。

缺点:

    这既是它的优点也是缺点,直接在内存中拷贝,构造函数是不会执行的,在实际开发当中应该注意这个潜在的问题。优点就是减少了约束,缺点也是减少了约束,这就需要我们在实际应用中考虑怎么合理的使用原型模型。

上一篇下一篇

猜你喜欢

热点阅读