創(chuàng)建型模式5-原型模式
原型模式(prototype)
意圖
用原型實例指定創(chuàng)建對象的種類去件,并且通過拷貝這些原型創(chuàng)建新的對象眠饮。
問題思考
考慮c++中淺拷貝和深拷貝必孤。java有類似的clone
適用性
- 當(dāng)要創(chuàng)建一個和某對象完全一樣的對象蓖救,并且手動拷貝比新建對象更方便的時候侣肄。
類圖
prototype
實現(xiàn)
class Prototype {
public:
Prototype *Clone() {
Prototype *prototype = new Prototype();
*prototype = *this; // default assignment
return prototype;
}
Prototype &operator=(const Prototype &) = default;
};
注意:代碼僅是一個簡單的例子旧困,具體的拷貝要根據(jù)具體的需求而定。此處是調(diào)用了默認的賦值函數(shù)稼锅。Prototype也可以是一個抽象類吼具,ConcretePrototype來實現(xiàn)具體的的clone操作(《設(shè)計模式》是采用的這種方法),請根據(jù)具體的需求而定矩距。