Prototype(原型模式)
介绍
在面向对象编程中,对象之间相互交流共同完成工作。但有时候,创建一个重量级对象成本较高(如通过网络,I/O,数据库操作才能完成创建的对象),而你的应用还需要大量的这种对象(它们都包含几乎相似的属性),那么这就隐含着一个性能问题。
让我们考虑这样一个场景:一个应用需要某些访问控制。不同类型的用户具有不同的权限来使用程序的特性。例如,某些用户可以生成报表,而某些就不行。甚至一些用户可以修改报表,而另一些只能阅读它们。有些用户拥有管理其它用户的权限。
每个用户都有一个自己的访问控制对象,用于对该应用的访问控制。该访问控制对象比较重量级,创建的成本很高,需要读取本地及网络资源,数据库等。
我们不能将访问控制对象在用户之间共享,因为在运行时,每个用户的权限可能会更改,而且相同级别的用户可能拥有不同的访问控制权限,用户与访问控制对象之间是一一对应的关系。
我们可以使用原型模式来解决我们的问题,我们一次性创建好所有级别的访问控制对象,然后每次给用户提供对应的拷贝对象,对象的拷贝毕竟比这些对象的创建要轻量的多,因此,这样可以提高系统的性能,因为资源的读取只有一次。
什么是原型模式
原型模式用于特定类型的对象,使用一个原型实例,通过复制这个原型来创建新的对象。
现有的对象作为原型,通过复制它的状态来创建实例,这样可以节省资源。