原型模式( )是一种创建型设计模式,它允许创建对象的副本,而无需知道对象的具体类。这种模式通过克隆现有实例来获得新实例,而不是通过new操作符创建新的对象。这在初始化成本高或者构造过程复杂的场景下特别有用。以下是C++中实现原型模式的一个基本示例:
1.类图
2.定义原型接口
首先,定义一个原型接口,其中包含一个用于克隆自己的方法。
// 原型接口
class Prototype {
public:
virtual ~Prototype() {}
virtual std::unique_ptr Clone() const = 0;
};
3.实现具体原型类
然后,创建一些具体原型类原型模式,它们继承自接口,并实现Clone方法。
// 具体原型类A
class ConcretePrototypeA : public Prototype {
public:
std::unique_ptr Clone() const override {
return std::make_unique(*this);
}
void ShowInfo() const {
std::cout << "ConcretePrototypeA instance" << std::endl;
}
};
// 具体原型类B
class ConcretePrototypeB : public Prototype {
public:
std::unique_ptr Clone() const override {
return std::make_unique(*this);
}
void ShowInfo() const {
std::cout << "ConcretePrototypeB instance" << std::endl;
}
};
4.客户端代码
客户端可以通过调用Clone方法来创建对象的副本,而不需要关心具体的创建细节。
int main() {
std::unique_ptr prototypeA = std::make_unique();
std::unique_ptr cloneA = prototypeA->Clone();
cloneA->ShowInfo(); // 输出: ConcretePrototypeA instance
std::unique_ptr prototypeB = std::make_unique();
std::unique_ptr cloneB = prototypeB->Clone();
cloneB->ShowInfo(); // 输出: ConcretePrototypeB instance
return 0;
}
在这个例子中,和都是的子类,并实现了Clone方法,返回一个新的自己类型的对象。客户端通过调用Clone方法就能轻松地创建出原型对象的复制品原型模式,简化了对象的创建过程,特别是在处理复杂对象结构或大量相似对象创建时,原型模式的优势更为明显。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。