【设计模式】装饰器模式(Decorator Pattern)

定义

装饰器模式(Decorator Pattern)是一种结构型设计模式。

装饰器模式通过创建一个装饰类,包装原始对象,并在保持原始对象接口不变的情况下,扩展其功能。

模式示例

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

// 基础文本输出类
class TextOutput {
public:
    virtual void write(const std::string& text) {
        std::cout << text;
    }
};

// 装饰器基类
class TextDecorator : public TextOutput {
protected:
    TextOutput* textOutput;
public:
    TextDecorator(TextOutput* output) : textOutput(output) {}
    void write(const std::string& text) override {
        textOutput->write(text);
    }
};

// 具体的装饰器类:粗体
class BoldDecorator : public TextDecorator {
public:
    BoldDecorator(TextOutput* output) : TextDecorator(output) {}
    void write(const std::string& text) override {
        std::cout << "<b>" << text << "</b>";
    }
};

// 具体的装饰器类:斜体
class ItalicDecorator : public TextDecorator {
public:
    ItalicDecorator(TextOutput* output) : TextDecorator(output) {}
    void write(const std::string& text) override {
        std::cout << "<i>" << text << "</i>";
    }
};

int main() {
    // 创建基础文本输出对象
    TextOutput* textOutput = new TextOutput();

    // 创建装饰器并嵌套组合
    TextDecorator* boldDecorator = new BoldDecorator(textOutput);
    TextDecorator* italicDecorator = new ItalicDecorator(boldDecorator);

    // 输出文本
    italicDecorator->write("Hello, World!");

    // 释放内存
    delete italicDecorator;
    delete boldDecorator;
    delete textOutput;

    return 0;
}
相关推荐
折哥的程序人生 · 物流技术专研2 小时前
Java 23 种设计模式:从踩坑到精通 | 装饰器模式 —— 比继承更灵活的扩展方式,你用过吗?
java·装饰器模式·java面试·结构型模式·java设计模式·javaio·从踩坑到精通
许彰午3 小时前
38_Java设计模式之装饰器模式
java·设计模式·装饰器模式
geovindu7 小时前
python: Reactor Pattern
开发语言·python·设计模式·反应器模式
workflower8 小时前
基于机器学习的设备故障预测分析方法
人工智能·算法·机器学习·设计模式·语言模型·自然语言处理·重构
迷茫运维路9 小时前
Golang架构目录设计与设计模式教程
设计模式·golang
workflower21 小时前
使用大语言模型处理用户需求
大数据·人工智能·设计模式·重构·动态规划
geovindu1 天前
go: Generators Pattern
开发语言·后端·设计模式·golang·生成器模式
GuWenyue1 天前
前端异步请求踩坑?3种方式搞定Ajax数据交互,从XHR到async/await
前端·javascript·设计模式
我登哥MVP1 天前
走进 Gang of Four 设计模式:装饰器模式
java·spring boot·设计模式·装饰器模式
秋漓1 天前
软件设计模式
设计模式