在开发类的过程中,开发人员通常要为这个类提供若干个构造器,以方便类型使用者实例化该类。在某此情况下,你也许希望避免类的用户直接调用构造器。此时,可使用Builder、Factory Method 以及Abstract Factory 模式等构造型模式,这三种模式都不充许类的用户直接调用类的构造器,而是为用户另外提供了一套构建方法,用于实例化适当的类。Prototype模式也向用户隐藏了类型创建方法,不过它采用的方法与前面的三种构造型模式不同。
Prototype(原型)模式不通过实例化类来创建一个新的未初始化的实例,而是通过复制一个现有的对象来生成新的对象。
优点:
1、可以在不创建新类的前提下创建新工厂;甚至可以在运行时创建一个GUI。
2、可以这样创建一个新工厂:复制一个老工厂,然后按照需求进行适当调整。比如,我们可以创建一个新的GUI工具集,与老工具集的差别只在于字体不同。借助于原型方法,新工厂的按钮和其他控制可以从以前的工厂“继承”值,如颜色。
缺点:
1、该模式方法充许我们修改每个工厂的属性值,诸如颜色和字体,但是不充许我们创建具有不同行为的新工具集。
2、终止UI工具集进一步扩充的原因不清楚;为什么进一步扩充存在问题?我们必须把工具集初始化代码放在建议的类的静态方法中。这种方法并不能真正减少需要管理的代码的数量。
3、不充许新对象拥有与父对象不同的方法。
下面我就结合一个例子来帮助大家理解Prototype(原型)模式
阅读全文