(一)创建型设计模式: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()方法来克隆原型对象,得到一个新的对象。最后,我们分别展示原型对象和克隆对象的信息。

相关推荐
ha204289419417 分钟前
Linux操作系统学习记录之---TcpSocket
linux·网络·c++·学习
AI视觉网奇2 小时前
ue5 插件 WebSocket
c++·ue5
左直拳2 小时前
将c++程序部署到docker
开发语言·c++·docker
恒者走天下2 小时前
AI智能体通讯项目(底层AI通讯协议实现)
c++
英雄各有见2 小时前
Chapter 5.1.1: 编写你的第一个GPU kernel——Cuda Basics
c++·gpu·cuda·hpc
GISer_Jing2 小时前
AI Agent 目标设定与异常处理
人工智能·设计模式·aigc
梵尔纳多2 小时前
OpenGL着色器语言(GLSL)
c++·opengl·着色器
net3m332 小时前
单片机屏幕多级菜单系统之当前屏幕号+屏幕菜单当前深度 机制
c语言·c++·算法
mmz12072 小时前
二分查找(c++)
开发语言·c++·算法
蔺太微2 小时前
组合模式(Composite Pattern)
设计模式·组合模式