原型模式( )是一种创建型设计模式,它允许创建对象的副本,而无需知道对象的具体类。这种模式通过克隆现有实例来获得新实例,而不是通过new操作符创建新的对象。这在初始化成本高或者构造过程复杂的场景下特别有用。以下是C++中实现原型模式的一个基本示例:

1.类图

原型模式例子_原型模式类图_原型模式

2.定义原型接口

首先,定义一个原型接口,其中包含一个用于克隆自己的方法。

#include #include 
// 原型接口class Prototype {public: virtual ~Prototype() {} virtual std::unique_ptr Clone() const = 0;};

3.实现具体原型类

然后,创建一些具体原型类原型模式,它们继承自接口,并实现Clone方法。

// 具体原型类Aclass ConcretePrototypeA : public Prototype {public:    std::unique_ptr Clone() const override {        return std::make_unique(*this);    }        void ShowInfo() const {        std::cout << "ConcretePrototypeA instance" << std::endl;    }};
// 具体原型类Bclass 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方法就能轻松地创建出原型对象的复制品原型模式,简化了对象的创建过程,特别是在处理复杂对象结构或大量相似对象创建时,原型模式的优势更为明显。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注