原型模式
有的时候,我们需要一个实例时, 并且,当创建一个实例的过程比较复杂或者说是昂贵时, 比如,创建实例的构造函数非常的复杂,在执行这个构造函数时会消耗较长的时间, 同时呢,这个构造函数中的一些信息又没有什么变化 (也就是说创建第一个实例时初始化信息是这样的,创建第二个实例时初始化信息还是还是这样的), 那么直接使用 new 来 创建这样一个实例就显得太昂贵了, 最好的解决方法,并不是使用 new 来实例化一个对象, 而是使用克隆,也就是复制,克隆呢,就是通过复制现在已经有了的实例来创建新的实例, 这样有什么好处呢? 很明显,这样实现呢,客户端根本就不知道具体要实例化的是哪一个类, 它只知道是复制了,但具体的实例化情况,它却是一无所知的,这样便对客户端进行了隐藏, 同时,复制一个对象一般情况下会比创建一个对象性能更高(当然有时候也不一定,只是一般情况而已), 其实上面所提到的就是下面要介绍的一个设计模式--原型模式(Prototype), 原型模式(Prototype) 定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的实例。 换句话说,原型模式就是通过复制现在已经存在的对象来创建一个新的对象。 原型模式的结构类图如下: 从上面这副类图中,可以看出,在 AbstractPrototype 中只声明了一个方法,那就是克隆自身。 下面我们就来看一看原型模式的具体实现: