当前位置: 首页 > news >正文

【设计模式】4.装饰器模式

装饰器模式,就是动态的给一个对象增加一些职责。

UML

在这里插入图片描述

code

#include "3.h"int main()
{// 有点类似于压栈的感觉, 显示人名 + 装饰1 + 装饰2 + 装饰3 => 输出 装饰321的人Person* person = new Person("syc");Tshrit* tshrit = new Tshrit();tshrit->decorate(person);Shoes* shoes = new Shoes();shoes->decorate(tshrit);Tie* tie = new Tie();tie->decorate(shoes);tie->show();return 0;
}
#pragma once
#include <string>
#include <iostream>
// 形象类
class ICharacter
{
public:virtual void show() = 0;
private:
};// 人
class Person : public ICharacter
{
public:Person(const std::string& name) : name(name) {}void show() override{std::cout << "装扮的" << this->name;}
private:std::string name;
};// 装饰类
class Decorator : public ICharacter
{
public:void decorate(ICharacter* character){this->character = character;}void show() override{character->show();}protected:ICharacter* character;
};// Tshrit
class Tshrit : public Decorator
{
public:void show() override{std::cout << "T Shrit";Decorator::show();}
private:
};// 鞋子
class Shoes : public Decorator
{
public:void show() override{std::cout << "鞋子";Decorator::show();}
};// 领带
class Tie : public Decorator
{
public:void show() override{std::cout << "领带";Decorator::show();}
};
http://www.lryc.cn/news/609247.html

相关文章:

  • 第二节 YOLOv5参数
  • 电商系统定制开发流程:ZKmall开源商城需求分析到上线全程可控
  • Linux命令基础(上)
  • 关于Web前端安全防御之内容安全策略(CSP)
  • 第八章:进入Redis的SET的核心
  • 基于 Spring Boot + Vue 实现人脸采集功能全流程
  • spring-ai-alibaba 之 graph 槽点
  • 无人机集群协同三维路径规划,采用冠豪猪优化器(Crested Porcupine Optimizer, CPO)实现,Matlab代码
  • 基于BiLSTM+CRF实现NER
  • JavaWeb学习------SpringCloud入门
  • 最小半径覆盖问题【C++解法+二分+扫描线】
  • 研报复现|史蒂夫·路佛价值选股法则
  • [硬件电路-138]:模拟电路 - 什么是正电源?什么是负电源?集成运放为什么有VCC+和VCC-
  • 【RH124 问答题】第 8 章 监控和管理 Linux 进程
  • MySQL学习之MVCC多版本并发控制
  • 浅谈Python中的os.environ:环境变量交互机制
  • [硬件电路-141]:模拟电路 - 源电路,信号源与电源,能自己产生确定性波形的电路。
  • IO流-数据流
  • LLM的训练:RLHF及其替代方案
  • 2025年6月电子学会青少年软件编程(C语言)等级考试试卷(七级)
  • 当Windows远程桌面出现“身份验证错误。要求的函数不受支持”的问题
  • 电机结构设计与特性曲线分析:基于MATLAB和FEMM的仿真研究
  • 【软考中级网络工程师】知识点之 IS-IS 协议
  • AI Agent 重塑产业发展新格局
  • SpringAI的使用
  • 图像张量中的通道维度
  • 【C 学习】04.1-数字化基础
  • Spring Boot 整合 Minio 实现高效文件存储解决方案(本地和线上)
  • Monaco Editor 开发流程详解
  • Flutter Dart类的使用