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

相关推荐
khddvbe2 分钟前
C++中的代理模式实战
开发语言·c++·算法
console.log('npc')11 分钟前
Cursor,Trae,Claude Code如何协作生产出一套前后台app?
前端·人工智能·react.js·设计模式·ai·langchain·ai编程
计算机安禾20 分钟前
【C语言程序设计】第31篇:指针与函数
c语言·开发语言·数据结构·c++·算法·leetcode·visual studio
酬勤-人间道22 分钟前
自研软件模型处理全流程|个人开发经验分享
c++·经验分享·计算机·计算机图形学·桩号·开挖·回填
郝学胜-神的一滴26 分钟前
算法奇旅:探寻3/5/7素因子之第k特殊数——优雅的多路指针解法全解析
数据结构·c++·算法·职场和发展
handler0140 分钟前
基础算法:分治
c语言·开发语言·c++·笔记·学习·算法·深度优先
2501_924952691 小时前
设计模式在C++中的实现
开发语言·c++·算法
T1an-11 小时前
(独自升级Lv.2)C++基础面试题
c++
艾莉丝努力练剑1 小时前
【MYSQL】MYSQL学习的一大重点:数据库基础
linux·运维·服务器·数据库·c++·学习·mysql
齐齐大魔王1 小时前
虚拟机网络无法连接
linux·网络·c++·python·ubuntu