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

专注网站建设与制作服务器建设一个自己的网站

专注网站建设与制作,服务器建设一个自己的网站,邢台好蜘蛛网站建设,国外代理ip《设计模式》装饰者模式 装饰者模式#xff08;Decorator Pattern#xff09;是一种结构型设计模式#xff0c;它允许在不改变现有对象结构的情况下#xff0c;动态地添加行为或责任到对象上。在装饰者模式中#xff0c;有一个抽象组件#xff08;Component#xff09;…《设计模式》装饰者模式 装饰者模式Decorator Pattern是一种结构型设计模式它允许在不改变现有对象结构的情况下动态地添加行为或责任到对象上。在装饰者模式中有一个抽象组件Component接口定义了基本的操作具体组件Concrete Component是实现了这个接口的对象。装饰器Decorator实现了这个抽象组件的接口它持有一个指向组件对象的指针并定义了与组件接口一致的接口。同时装饰器可以在调用组件接口前或者后添加额外的行为或责任。具体装饰器Concrete Decorator是实现了装饰器接口的对象它可以包装一个具体组件或另一个装饰器。 使用装饰者模式的主要优点包括 在不改变现有对象结构的情况下可以动态地添加或删除行为或责任。可以使用多个装饰器对一个对象进行多次装饰以实现复杂的行为。装饰器与被装饰的对象可以独立变化互不影响。 使用装饰者模式的一些常见场景包括 当需要在不影响现有代码的情况下动态地给一个对象添加新的行为或责任时可以使用装饰者模式。当需要通过多次装饰来实现复杂的行为时可以使用装饰者模式。当需要在不影响其他对象的情况下对某个对象进行细粒度的控制时可以使用装饰者模式。 装饰者模式的思想精髓在于它允许在运行时动态地添加行为而不需要通过继承来扩展对象的行为。在装饰者模式中所有的装饰器都遵循同一个接口这使得它们可以互相替换和组合从而实现非常灵活的行为扩展。同时由于装饰器模式不需要通过修改原有代码来添加新行为因此可以很好地遵循开放封闭原则使得代码更加可维护和可扩展。 #include iostream using namespace std;// 基础接口 class Component { public:virtual void operation() 0; };// 具体组件 class ConcreteComponent : public Component { public:virtual void operation() {cout 具体组件的操作 endl;} };// 装饰抽象类 class Decorator : public Component { public:Decorator(Component* component) : m_pComponent(component) {}virtual void operation() {if (m_pComponent ! nullptr) {m_pComponent-operation();}} protected:Component* m_pComponent; };// 具体装饰类A class ConcreteDecoratorA : public Decorator { public:ConcreteDecoratorA(Component* component) : Decorator(component) {}virtual void operation() {Decorator::operation();addBehavior();}void addBehavior() {cout 具体装饰对象A的操作 endl;} };// 具体装饰类B class ConcreteDecoratorB : public Decorator { public:ConcreteDecoratorB(Component* component) : Decorator(component) {}virtual void operation() {Decorator::operation();addBehavior();}void addBehavior() {cout 具体装饰对象B的操作 endl;} };int main() {Component* component new ConcreteComponent();ConcreteDecoratorA* decoratorA new ConcreteDecoratorA(component);ConcreteDecoratorB* decoratorB new ConcreteDecoratorB(decoratorA);decoratorB-operation();delete decoratorB;delete decoratorA;delete component;return 0; }在这个示例中Component 定义了组件的基本接口ConcreteComponent 是具体的组件实现。Decorator 是装饰抽象类继承自 Component并持有一个 Component 对象。ConcreteDecoratorA 和 ConcreteDecoratorB 是具体的装饰类继承自 Decorator并在 operation 方法中先调用父类的 operation 方法再增加自己的行为。 在 main 函数中我们首先创建了一个 ConcreteComponent 对象然后通过 ConcreteDecoratorA 和 ConcreteDecoratorB 对其进行装饰最终调用了 decoratorB 的 operation 方法来触发整个装饰过程。输出结果如下 具体组件的操作 具体装饰对象A的操作 具体装饰对象B的操作
http://www.dnsts.com.cn/news/239227.html

相关文章:

  • 专业网站建设哪家效果好seo关键词优化指南
  • 珠海市企业网站制作服务机构官网网站怎么做
  • 自己做电影网站需要的成本模板建网站
  • 一个网站是如何知道是谁来访问网站前台的功能模块
  • 宁波网站建设公司在哪里宝应吧 百度贴吧
  • 视频直播网站如何做大连哪家网站技术开发公司好
  • 经三路专业做网站个人服务器搭建做网站
  • 网站建设策划需要涉及免费公司网址怎么注册
  • 哪个网站域名解析wordpress 规则
  • 网站设计的国际专业流程包括搭建购物网站
  • 专业的东莞网站推广广告网站设计公司好吗
  • 企业网站托管电话简单建设企业办公网站
  • 网站模版设计最美情侣高清视频播放
  • 怎么把网站关掉cms影视系统
  • 网站与微信结合工程建设最好的网站
  • 做网站分为哪几个岗位金融系统网站模板
  • 音乐网页设计素材百度seo在线优化
  • 广东网站开发费用网站建设理论依据
  • 网站切片怎么做seo专业术语
  • 电子商务网站建设与完整实例wordpress 云解析视频教程
  • 网站建设与网站优化深入解析wordpress 原书第2版 pdf
  • 国外网站卖货平台工程公司注册经营范围
  • 课程注册 网站开发怎么做游戏网站
  • 建设银行网站为什么进不去创建网站是怎么赚钱
  • 网站备案是在哪里查wordpress折叠代码
  • 健身会所网站模板泉州优化怎么做seo
  • 网站优化标题不超过多少个字符网站建设运城
  • 太原有网站工程公司吗建设和交通局网站
  • 装饰公司网站建设html5 metro风格网站模板
  • 企业建设网站能否报销seo优化就业前景