使程序运行更高效——原型模式
2018-05-31 本文已影响6人
青峰星宇
原型模式定义(正式难懂):
用原型实例指定创建对象的种类,并通过复制这些原型创建新的对象
原型模式的使用场景:
1)类初始化需要消耗非常多的资源,这个资源包括数据、硬件资源等,通过原型复制避免这些消耗。
2)通过new产生一个对象需要非常繁琐的数据准备或者访问权限,这时可以使用原型模式。
3)一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式复制多个对象供调用者使用,即保护性拷贝。
当然,我们再使用时要注意,通过实现Cloneable接口的原型模式在调用clone函数构造实例时并不一定比通过new操作速度快,只有当通过new构造对象较为耗时或者说成本较高时,通过clone方法才能够获得效率上的提升。实现原型模式也不一定非要实现Cloneable接口,也有其他方式实现。
原型模型的通俗易懂解释:
原型模型本质上就是对象拷贝,容易出现的问题就是深拷贝、浅拷贝。使用原型模式可以解决构造复杂对象的资源消耗问题,能够在某些场景下提升创建对象的效率。还有一个重要的用途就是保护性拷贝,也就是某个对象对外可能是只读的,为了防止外部对这个只读对象修改,通常可以通过返回一个对象拷贝的形式实现只读的限制。
原型模型的优缺点:
优点:
原型模式是在内存中二进制流的拷贝,要比直接new一个对象性能好很多,特别是要在一个循环体内产生大量的对象时,原型模式可以更好地体现其优点。
缺点:
这既是它的优点也是缺点,直接在内存中拷贝,构造函数是不会执行的,在实际开发当中应该注意这个潜在的问题。优点就是减少了约束,缺点也是减少了约束,这就需要我们在实际应用中考虑怎么合理的使用原型模型。