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

相关推荐
迷迭所归处3 小时前
C++ —— 关于vector
开发语言·c++·算法
CV工程师小林3 小时前
【算法】BFS 系列之边权为 1 的最短路问题
数据结构·c++·算法·leetcode·宽度优先
white__ice4 小时前
2024.9.19
c++
天玑y4 小时前
算法设计与分析(背包问题
c++·经验分享·笔记·学习·算法·leetcode·蓝桥杯
姜太公钓鲸2334 小时前
c++ static(详解)
开发语言·c++
菜菜想进步4 小时前
内存管理(C++版)
c语言·开发语言·c++
Joker100855 小时前
C++初阶学习——探索STL奥秘——模拟实现list类
c++
科研小白_d.s5 小时前
vscode配置c/c++环境
c语言·c++·vscode
湫兮之风5 小时前
c++:tinyxml2如何存储二叉树
开发语言·数据结构·c++
友友马6 小时前
『 Linux 』HTTP(一)
linux·运维·服务器·网络·c++·tcp/ip·http