创建型模式5-原型模式
原型模式(prototype)
意图
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
问题思考
考虑c++中浅拷贝和深拷贝。java有类似的clone
适用性
- 当要创建一个和某对象完全一样的对象,并且手动拷贝比新建对象更方便的时候。
类图

实现
class Prototype {
public:
Prototype *Clone() {
Prototype *prototype = new Prototype();
*prototype = *this; // default assignment
return prototype;
}
Prototype &operator=(const Prototype &) = default;
};
注意:代码仅是一个简单的例子,具体的拷贝要根据具体的需求而定。此处是调用了默认的赋值函数。Prototype也可以是一个抽象类,ConcretePrototype来实现具体的的clone操作(《设计模式》是采用的这种方法),请根据具体的需求而定。
网友评论