大话设计模式之原型模式

原型模式(Prototype Pattern)是一种创建型设计模式,它用于创建对象的复制,同时又能保持对象的封装。原型模式通过复制现有对象的方式来创建新的对象,而无需知道具体创建过程的细节。

在原型模式中,通常会有两种角色:

  1. 原型接口(Prototype Interface):声明了一个用于克隆自身的接口,这样所有具体原型类都必须实现该接口。

  2. 具体原型(Concrete Prototype):实现了原型接口,负责对自身进行克隆。

#include <iostream>
#include <string>

// 原型接口
class Prototype {
public:
    virtual Prototype* clone() = 0;
    virtual void setProperty(const std::string& value) = 0;
    virtual std::string getProperty() const = 0;
};

// 具体原型
class ConcretePrototype : public Prototype {
private:
    std::string property;

public:
    Prototype* clone() override {
        ConcretePrototype* cloned = new ConcretePrototype();
        cloned->setProperty(this->property);
        return cloned;
    }

    void setProperty(const std::string& value) override {
        property = value;
    }

    std::string getProperty() const override {
        return property;
    }
};

int main() {
    // 创建原型对象
    ConcretePrototype* original = new ConcretePrototype();
    original->setProperty("Original Property");

    // 克隆原型对象
    ConcretePrototype* cloned = dynamic_cast<ConcretePrototype*>(original->clone());

    // 修改克隆对象的属性
    cloned->setProperty("Cloned Property");

    // 输出属性值
    std::cout << "Original Property: " << original->getProperty() << std::endl;
    std::cout << "Cloned Property: " << cloned->getProperty() << std::endl;

    delete original;
    delete cloned;

    return 0;
}

/*
在这个示例中,Prototype 是原型接口,ConcretePrototype 是具体原型类。通过原型模式,我们可以使用原型对象来克隆出新的对象,并且可以修改克隆对象的属性,而不影响原型对象本身。

原型模式适用于需要创建大量相似对象且创建过程比较昂贵或复杂的情况。通过原型模式,我们可以通过复制已有对象来创建新对象,而无需重复执行创建过程的开销。

*/

觉得有帮助的话,打赏一下呗。。

           

相关推荐

  1. 大话设计模式工厂模式

    2024-03-30 12:04:02       19 阅读
  2. 大话设计模式策略模式

    2024-03-30 12:04:02       21 阅读
  3. 大话设计模式装饰模式

    2024-03-30 12:04:02       19 阅读
  4. 大话设计模式简单工厂模式

    2024-03-30 12:04:02       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-30 12:04:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-30 12:04:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-30 12:04:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-30 12:04:02       20 阅读

热门阅读

  1. 设计模式(6):桥接模式

    2024-03-30 12:04:02       18 阅读
  2. 常用设计模式

    2024-03-30 12:04:02       17 阅读
  3. Flume和Kafka的区别

    2024-03-30 12:04:02       16 阅读
  4. c语音函数大全(W开头)

    2024-03-30 12:04:02       17 阅读
  5. ORACLE 存中文

    2024-03-30 12:04:02       17 阅读
  6. LeetCode 345. 反转字符串中的元音字母

    2024-03-30 12:04:02       18 阅读
  7. CentOS 7.9上创建Redis用户和组

    2024-03-30 12:04:02       19 阅读
  8. MySQL的索引

    2024-03-30 12:04:02       16 阅读
  9. Redis中Hash数据结构的底层实现

    2024-03-30 12:04:02       20 阅读
  10. RISC-V单板计算机模拟和FPGA板多核IP实现

    2024-03-30 12:04:02       18 阅读
  11. axios详解

    2024-03-30 12:04:02       16 阅读