【设计模式】装饰器模式(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;
}
相关推荐
huangyujun992012338 分钟前
设计模式杂谈-模板设计模式
java·设计模式
magic 2451 小时前
Java设计模式:责任链模式
java·设计模式·责任链模式
YGGP12 小时前
【结构型模式】代理模式
设计模式
庄小焱17 小时前
设计模式——中介者设计模式(行为型)
设计模式
庄小焱19 小时前
设计模式——备忘录设计模式(行为型)
设计模式
庄小焱19 小时前
设计模式——代理设计模式(结构型)
设计模式
哆啦A梦的口袋呀20 小时前
基于Python学习《Head First设计模式》第三章 装饰者模式
python·学习·设计模式
哆啦A梦的口袋呀20 小时前
基于Python学习《Head First设计模式》第五章 单件模式
python·学习·设计模式
季鸢20 小时前
Java设计模式之备忘录模式详解
java·设计模式·备忘录模式
摘星编程1 天前
工厂方法模式深度解析:从原理到应用实战
java·设计模式·软件工程·工厂方法模式