(一)创建型设计模式:4、原型模式(Prototype Pattern)

目录

1、原型模式的含义

2、C++实现原型模式的简单实例


1、原型模式的含义

通过复制现有对象来创建新对象,而无需依赖于显式的构造函数或工厂方法,同时又能保证性能。

The prototype pattern is a creational design pattern in software development. It is used when the type of objects to create is determined by a prototypical instance, which is cloned to produce new objects. This pattern is used to: avoid subclasses of an object creator in the client application, like the factory method pattern does.

Specify the kind of objects to create using a prototypical instance, and create new objects by copying this prototype.

(使用原型实例指定将要创建的对象类型,通过复制这个实例创建新的对象。)

2、C++实现原型模式的简单实例

cpp 复制代码
#include <iostream>
#include <string>

// 抽象原型类
class Prototype {
public:
    virtual Prototype* clone() const = 0;
    virtual void show() const = 0;
};

// 具体原型类
class ConcretePrototype : public Prototype {
public:
    ConcretePrototype(const std::string& name) : m_name(name) {}

    Prototype* clone() const override {
        return new ConcretePrototype(*this);
    }

    void show() const override {
        std::cout << "ConcretePrototype: " << m_name << std::endl;
    }

private:
    std::string m_name;
};

int main() {
    // 创建原型对象

    Prototype* prototype = new ConcretePrototype("Prototype");

    // 克隆原型对象

    Prototype* clone = prototype->clone();

    // 展示原型和克隆对象

    prototype->show();
    clone->show();

    delete prototype;
    delete clone;

    return 0;
}

在上述示例中,我们定义了一个抽象原型类(Prototype),其中包含了两个纯虚函数:clone()用于克隆对象,show()用于展示对象。然后,我们实现了具体的原型类(ConcretePrototype),它继承自抽象原型类,并实现了抽象原型类中的纯虚函数。

在主函数中,我们首先创建一个原型对象(ConcretePrototype),然后通过调用clone()方法来克隆原型对象,得到一个新的对象。最后,我们分别展示原型对象和克隆对象的信息。

相关推荐
明洞日记2 分钟前
【设计模式手册013】命令模式 - 请求封装的优雅之道
java·设计模式·命令模式
卡提西亚23 分钟前
C++笔记-34-map/multimap容器
开发语言·c++·笔记
ada0_ada129 分钟前
行为型模式:②命令模式(Command Pattern)
设计模式
2***B44944 分钟前
C++在金融中的QuantLibXL
开发语言·c++·金融
A***07171 小时前
C++在游戏中的阴影渲染
开发语言·c++·游戏
o0向阳而生0o1 小时前
113、23种设计模式之中介者模式(21/23)
设计模式·中介者模式
心语星光1 小时前
23种经典设计模式
设计模式
Q***l6872 小时前
C++在计算机图形学中的渲染
开发语言·c++
oioihoii2 小时前
C++语言演进之路:从“C with Classes”到现代编程基石
java·c语言·c++
咔咔咔的3 小时前
3190. 使所有元素都可以被 3 整除的最少操作数
c++