首页 > 编程语言 >c++实现装饰器模式

c++实现装饰器模式

时间:2023-06-29 17:45:02浏览次数:35  
标签:std cout IComponent component 模式 public c++ Operate 装饰

1、构建基本类的抽象

#include <iostream>

class IComponent
{
    public:
        virtual void Operate()=0;

    private:

};

2、构建基本类

class Component:public IComponent
{
    public:
        void Operate() override {
            std::cout << "基础操作..."<<std::endl;
        }

    private:

};

3、构建装饰器类

class Decorate:public IComponent
{

    private:
        IComponent * m_component;

    public:
        Decorate(IComponent * component){
            m_component = component;
        }

        void Operate() override{
            std::cout << "操作前处理..." << std::endl;
            m_component->Operate();
            std::cout << "操作后处理..." << std::endl;
        }
    private:

};

4、调用:

class Decorate:public IComponent
{

    private:
        IComponent * m_component;

    public:
        Decorate(IComponent * component){
            m_component = component;
        }

        void Operate() override{
            std::cout << "操作前处理..." << std::endl;
            m_component->Operate();
            std::cout << "操作后处理..." << std::endl;
        }
    private:

};

5、结果

 

标签:std,cout,IComponent,component,模式,public,c++,Operate,装饰
From: https://www.cnblogs.com/xietianjiao/p/17514803.html

相关文章

  • 第二天(redis基础,配置,事务,持久化(RDB,AOF),发表和订阅,主从复制,哨兵模式)
    LISTlremkeynvaluerpoplpushab把a的右边的元素加到b的左边Set集合从第一个集合移动到第二个集合Hash哈希Zset有序集合GEO地理位置(类似Hash)HyperloglogBitMapredis配置(pdf里)redis事务实践R......
  • 什么是设计模式?
    普遍认同的2种软件模式:设计模式和架构模式。重构模式模式的定义:每个模式都描述了一个问题,这个问题在我们的环境中一遍一遍出现。且模式还给出了这个问题的核心解决方案,这个方案可以被一次次地重用,而无需每次都从头开始。  ......
  • C++ 编程中的核心知识点!
    const作用修饰变量,说明该变量不可以被改变;修饰指针,分为指向常量的指针(pointertoconst)和自身是常量的指针(常量指针,constpointer);修饰引用,指向常量的引用(referencetoconst),用于形参类型,即避免了拷贝,又避免了函数对值的修改;修饰成员函数,说明该成员函数内不能修改成员......
  • IBM超越老服务模式 或推进利润率增长
    10/19/20097:30:54PM北京时间10月15日消息,据国外媒体报道,IBM因拓展计算机软件和服务,其利润率或连续8个季度增长。分析师预计其第三季度利润或增长至每股收益2.39美元;年收益为每股9.77美元,比IBM自己的预测约高7美分。IBMCEO彭明盛(SamPalmisano)在过去十年中投资软件和服务业务收......
  • 设计模式之单例模式
    很重要的一个设计模式!!介绍:它和工厂模式一样,都属于创建型模式,用于类进行初始化。单例模式保证一个类只会被实例化一次。1.线程安全的懒汉单例模式publicclassSingletonTwo{privatevolatilestaticSingletonTwosingletonTwo;privateSingletonTwo(){}......
  • C++面试八股文:用过STL吗?
    某日二师兄参加XXX科技公司的C++工程师开发岗位第21面:面试官:用过STL吗?二师兄:(每天都用好吗。。)用过一些。面试官:你知道STL是什么?二师兄:STL是指标准模板库(StandardTemplateLibrary),是C++区别于C语言的特征之一。面试官:那你知道STL的六大部件是什么?二师兄:分别是容......
  • C++面试八股文:知道std::unordered_set/std::unordered_map吗?
    某日二师兄参加XXX科技公司的C++工程师开发岗位第27面:面试官:知道std::unordered_set/std::unordered_map吗?二师兄:知道。两者都是C++11引入的新容器,和std::set和std::map功能类似,key唯一,unordered_map的value可变。二师兄:不同于set/map,unordered_set/unordered_map都是无序容器......
  • C#C++联合debug-vs2019
    转自:https://blog.csdn.net/qq_41375318/article/details/127717701vs2019中C#和c++的dll进行联合调试*Major*已于2022-11-0617:29:51修改462收藏2文章标签:c#版权vs2019中C#和c++的dll进行联合调试一C++这边属性的输出目录设置为C#的Debug目录二调试设为C#的exe路径......
  • 解决使用锐捷网络时CentOS7在网络适配器为NAT模式下无法联网的问题
    原因:锐捷网络会反复自动关闭该服务解决方法:1.使用脚本保持自动打开nat服务2.锐捷客户端下虚拟机VMware无法联网的问题(本人没有尝试过该方法)......
  • 面向对象之绑定方法,非绑定方法,隐藏属性,property装饰器,三大特征
    绑定方法#绑定给类的方法#绑定给对象的方法classStudent():school='SH'def__init__(self,name,age,gender):#self:对象自己self.name=nameself.age=ageself.gender=gender#这个就是绑定给对象的方法,有......