Prototype模式学习笔记
适用情况:当一个系统要生产很多种产品(这些产品可能构成复杂的层次结构)时,想避免生成和产品种类个数(以及产品层次结构)相同的实体工厂。或者说某些种产品会临时加入到生产线,当前没有一个工厂知道怎么生产这种产品(初始化产品)或者生产一次产品的代价很大。
?
?解决方案:将每一种产品的一个实例(或者多个实例,每个实例代表这种产品的一种初始化状态)作为一个prototype,所有产品都有一个clone()接口用来复制产品实例本身。?这样当系统需要一种产品时,只要调用这种产品对应的prototype的clone()方法就行了。
类图:
?
?
?
?
? GOF中的例子:
?
?
?? 实际应用:最典型的应用应该是当产品对象是动态加载的,比如说从数据库或者从网络加载的。这样的话要再生成一次对象代价很大(重新读数据库),或者说不可能(网络传输已经断开)。于是就以第一次生成的对象作为prototype来生产后面的对象。
?
?? 与其它设计模式的比较:TBD