装饰器模式详解

8.9.6 装饰器模式

​ 装饰器模式是一种结构型模式,主要是给一个类添加更多功能;

示例代码:

c++ 复制代码
#include <iostream>
#include <string>

// 抽象基类:文本修饰器
class TextDecorator {
public:
    virtual std::string decorate(const std::string& text) const = 0;
};

// 具体修饰器:加粗修饰器
class BoldDecorator : public TextDecorator {
public:
    std::string decorate(const std::string& text) const override {
        return "<b>" + text + "</b>";
    }
};

// 具体修饰器:斜体修饰器
class ItalicDecorator : public TextDecorator {
public:
    std::string decorate(const std::string& text) const override {
        return "<i>" + text + "</i>";
    }
};

int main() {
    // 原始文本
    std::string text = "Hello, world!";

    // 创建修饰器对象
    TextDecorator* boldDecorator = new BoldDecorator();
    TextDecorator* italicDecorator = new ItalicDecorator();

    // 使用装饰器修饰文本
    std::string boldText = boldDecorator->decorate(text);
    std::string italicText = italicDecorator->decorate(text);

    // 显示修饰后的文本
    std::cout << "Bold Text: " << boldText << std::endl;
    std::cout << "Italic Text: " << italicText << std::endl;

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

    return 0;
}
相关推荐
Vacant Seat19 分钟前
贪心算法-买卖股票的最佳时机
java·数据结构·算法·贪心算法
ox008032 分钟前
C++ 设计模式-中介者模式
c++·设计模式·中介者模式
黄铎彦34 分钟前
使用GDI+、文件和目录和打印API,批量将图片按文件名分组打包成PDF
c++·windows·pdf
郑州吴彦祖77240 分钟前
数据结构——二叉树经典习题讲解
java·数据结构·算法·leetcode
lyx14260640 分钟前
leetcode 8. 字符串转换整数 (atoi)
算法
qy发大财43 分钟前
跳跃游戏II(力扣45)
算法·leetcode
Joyner20181 小时前
python-leetcode-相交链表
算法·leetcode·链表
Ciderw1 小时前
LLVM编译器简介
c++·golang·编译·编译器·gcc·llvm·基础设施
和光同尘@1 小时前
74. 搜索二维矩阵(LeetCode 热题 100)
数据结构·c++·线性代数·算法·leetcode·职场和发展·矩阵
一去不复返的通信er1 小时前
SVD预编码
算法·信息与通信·预编码算法·通信原理