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

滕州网站建设哪家好网站开发的语言有什么软件

滕州网站建设哪家好,网站开发的语言有什么软件,Audiology wordpress,wordpress输出响应式图片大小装饰模式是一种结构型设计模式,它允许你动态地给一个对象添加额外的职责,相比继承更加灵活。1. 模式定义装饰模式:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。2. 模式结构主要角色&#…

装饰模式是一种结构型设计模式,它允许你动态地给一个对象添加额外的职责,相比继承更加灵活。

1. 模式定义

装饰模式:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。

2. 模式结构

主要角色:

  • Component(抽象构件):定义对象的接口,可以给这些对象动态添加职责

  • ConcreteComponent(具体构件):定义具体的对象,可以给它添加职责

  • Decorator(抽象装饰类):继承/实现Component,并包含一个Component的引用

  • ConcreteDecorator(具体装饰类):向构件添加具体职责

代码: 

#include <iostream>
#include <string>// 抽象构件
class Beverage {
public:virtual ~Beverage() = default;virtual std::string getDescription() const = 0;virtual double cost() const = 0;
};// 具体构件
class Espresso : public Beverage {
public:std::string getDescription() const override {return "Espresso";}double cost() const override {return 1.99;}
};// 抽象装饰类
class CondimentDecorator : public Beverage {
protected:Beverage* beverage;
public:explicit CondimentDecorator(Beverage* beverage) : beverage(beverage) {}virtual ~CondimentDecorator() { delete beverage; }std::string getDescription() const override = 0;
};// 具体装饰类A
class Milk : public CondimentDecorator {
public:explicit Milk(Beverage* beverage) : CondimentDecorator(beverage) {}std::string getDescription() const override {return beverage->getDescription() + ", Milk";}double cost() const override {return beverage->cost() + 0.20;}
};// 具体装饰类B
class Mocha : public CondimentDecorator {
public:explicit Mocha(Beverage* beverage) : CondimentDecorator(beverage) {}std::string getDescription() const override {return beverage->getDescription() + ", Mocha";}double cost() const override {return beverage->cost() + 0.30;}
};// 使用示例
int main() {// 创建基础饮料Beverage* beverage = new Espresso();std::cout << beverage->getDescription() << " $" << beverage->cost() << std::endl;// 用装饰类包装Beverage* beverage2 = new Milk(beverage);beverage2 = new Mocha(beverage2);  // 再次装饰std::cout << beverage2->getDescription() << " $" << beverage2->cost() << std::endl;delete beverage2;  // 会递归删除所有装饰对象return 0;
}

 uml结构

 

3. 模式特点

优点:

  1. 比继承更灵活:动态添加或撤销功能

  2. 避免子类膨胀:通过组合而非继承扩展功能

  3. 符合开闭原则:对扩展开放,对修改关闭

缺点:

  1. 会产生许多小对象:增加系统复杂度

  2. 多层装饰时调试困难:需要逐层检查

4. 应用场景

  1. 扩展单个对象的功能,而不影响其他对象

  2. 动态透明地添加职责,可以随时撤销

  3. 不适合用子类扩展的情况(如子类数量爆炸)

5. 装饰模式 vs 继承

特性装饰模式继承
扩展方式动态组合静态编译时确定
灵活性高,可运行时调整低,编译时固定
对象关系组合关系父子关系
类数量装饰类数量较少可能导致子类爆炸

 装饰模式是扩展对象功能的一种灵活方式,特别适合在运行时动态添加或修改对象行为的场景。


文章转载自:

http://X9VLgg6a.rksjz.cn
http://4lYlid8C.rksjz.cn
http://9XDiyUAu.rksjz.cn
http://MFcGRoo4.rksjz.cn
http://HXOvBdVk.rksjz.cn
http://fqJn5fUV.rksjz.cn
http://9rtYi2Rs.rksjz.cn
http://C02zcDPm.rksjz.cn
http://aI23Y1Mn.rksjz.cn
http://0od2tYd6.rksjz.cn
http://AfNb2ZfK.rksjz.cn
http://HEBRV9PB.rksjz.cn
http://n7CedUEa.rksjz.cn
http://e8ivYfkA.rksjz.cn
http://ccYNJI3w.rksjz.cn
http://LMwg8BkH.rksjz.cn
http://nIBfDiGW.rksjz.cn
http://HjuvbIHa.rksjz.cn
http://INYntjJm.rksjz.cn
http://wtK9Yrdf.rksjz.cn
http://h5pKJmvh.rksjz.cn
http://h9UKbOca.rksjz.cn
http://87oTHjqK.rksjz.cn
http://aiPtoSDT.rksjz.cn
http://NjCuP177.rksjz.cn
http://FgrXHKbq.rksjz.cn
http://AgCcaD0i.rksjz.cn
http://yIKd4N5D.rksjz.cn
http://A0xIJ70C.rksjz.cn
http://rjEAQqax.rksjz.cn
http://www.dtcms.com/wzjs/667203.html

相关文章:

  • 百度网站安全在线检测it培训机构培训费用
  • 中英文网站源码云南企业展厅设计
  • 备案做电影网站吗网页设计与网站建设主要内容
  • 建设局招标网站中国铁路建设工程招标网站
  • 域名空间网站html5做的网站
  • 红酒网站程序服装网站建设开发语言
  • 站长seo网站推广 排名
  • 呼市賽罕区信息网站做一顿饭工作怎么删除WordPress外链
  • 关于网页制作的网站网站建设四川
  • 建设网站大概要花多少钱企业为什么审计
  • 厦门建网站费用一览表设计建筑办公室
  • 兰州哪家网站做推广效果好应用公园下载
  • 哈尔滨网站关键字优化甘肃建设厅网站二级建造师报名时间
  • 东莞高端网站建设公司福州响应式网站
  • 网站源码 免费下载wordpress logo设置
  • 建设一个广告联盟的网站wordpress定时任务
  • 团购网站开发需要多久网站建设文章官网
  • 申请域名后怎么建设网站我想承包小工程
  • 那个相亲网站做的比较好网络架构分为几层
  • 个人网站设计流程图简单的页面
  • 池州家居网站建设怎么样线上推广渠道有哪些
  • 手机网站开发与pc网站开发的不同怎么做网站广告位
  • 包头公司做网站淮南最新消息今天
  • 服务器在国外的网站现在网站后台有哪几种模板形式
  • jsp网站建设作业我的网站wordpress
  • 住房和城乡建设部网站投诉电话域名绑定wordpress
  • 百度指数免费查询入口沈阳网站推广优化公司
  • 建设网站涉及哪些问题网页传奇新开网站
  • 网站后台超链接怎么做做网站是什么
  • 网站发布工具百度知道网页版地址