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

做网站可以参考的网站相对于网站根目录的的绝对路径

做网站可以参考的网站,相对于网站根目录的的绝对路径,做的网站上传到服务器吗,phpcms wordpress比较《设计模式》装饰者模式 装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许在不改变现有对象结构的情况下,动态地添加行为或责任到对象上。在装饰者模式中,有一个抽象组件(Component)…

《设计模式》装饰者模式

装饰者模式(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 对象。ConcreteDecoratorAConcreteDecoratorB 是具体的装饰类,继承自 Decorator,并在 operation 方法中先调用父类的 operation 方法,再增加自己的行为。

main 函数中,我们首先创建了一个 ConcreteComponent 对象,然后通过 ConcreteDecoratorAConcreteDecoratorB 对其进行装饰,最终调用了 decoratorBoperation 方法来触发整个装饰过程。输出结果如下:

具体组件的操作
具体装饰对象A的操作
具体装饰对象B的操作
http://www.yayakq.cn/news/561069/

相关文章:

  • 网站建设软件哪个最好网站建设 南宁
  • 网站商城建设公司达州北京网站建设
  • 有什么网站是做中式酒店大堂的如何有效的推广宣传
  • 哪个不是网站开发工具深圳做网站公司有哪些
  • 网站建设公司广东产品毕业设计作品网站
  • 便宜网站建设公司哪家好临沂网站建设技术托管
  • 陕西十二建设有限公司网站深圳市专业制作网站公司吗
  • 外贸在哪个网站做洛阳网站推广公司电话
  • 网站主题切换网站使用问题
  • 房地产网站建设公司企业官网建站的流程
  • 成都网站建设博客中小型企业网络建设方案
  • 手机 互动网站案例ps怎样做网站首页图
  • 要查询一个网站在什么公司做的推广怎么查oa系统运维
  • 个人网站不备案做经营性质网站服装网站建设前景分析
  • 网站更新问题网站和app软件制作公司
  • 局域网站点建设方案后端开发流程
  • 做网站语言服务器 空间手机网站的引导页
  • 合肥企业制作网站滁州建设网站公司
  • 重庆在线网站推广莱芜网络推广公司电话
  • 蓝色大气企业网站建设工程协会网站查询系统
  • 资讯网站的优势微信公众号做电影网站
  • 网站建设大作业电子商务营销方向
  • 怎么制作自己的网页网站江门建网站
  • 网站模版整站下载团购网站怎么做
  • 顺德企业门户网站建设明天去广州需要隔离吗
  • pc端网站转手机站怎么做网站开发文档撰写模板
  • 有没有做网站源代码修改的优惠券网站怎么做的
  • 金华建设银行网站注册公司做网站
  • 网站建设与管理好处网易企业邮箱登录入口手机网页版
  • html5精美网站做物流网站的公司哪家好