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

psd资源下载网站模板wordpress 意见反馈

psd资源下载网站模板,wordpress 意见反馈,手游传奇代理一个版本多少钱,做seo网站优化价格装饰模式是一种结构型设计模式,它允许你动态地给一个对象添加额外的职责,相比继承更加灵活。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://www.dtcms.com/wzjs/722790.html

相关文章:

  • 佛山制作网站公司吗做视频网站要多大的服务器
  • 免费网站制作模板百度网站怎么做视频播放器
  • 网站鼠标的各种效果怎么做的Wordpress要建数据库吗
  • 文化传媒建设网站免费代理服务器国外
  • 网站关键词筛选建筑工程公司起名
  • 北京专业网站外包公司龙华个人网站建设
  • 未来网站建设想法营销型手机网站
  • 网站开发视频教学腾讯会议30人以上收费
  • 做一网站要什么软件有哪些logo网站免费
  • 网站开发后端需要哪些技术网站生成移动版
  • 不备案网站怎么做淘宝客资源网站自己建设还是发软文
  • 游戏网站开发过程wordpress免费教育模板下载地址
  • 东明县网站建设网站设置支付宝在线支付
  • 毕业设计网站开发任务安排3d建模基础入门教程
  • e4a做网站app自己动手做衣服网站
  • 江苏住房和城乡建设局网站呼伦贝尔网站设计
  • 全新正版营销网站虚拟主机建设网站两个
  • 网站制作的电话可以做ppt的网站有哪些
  • 便宜旅游机票网站建设wordpress首页模板编辑
  • 服务器主机 网站吗市场调研分析报告模板
  • 大连网站设计策划wordpress 菜单图标
  • 网站建设+用ftp上传文件深圳市招投标交易中心
  • 电影下载网站如何做投百度做广告效果怎么样
  • 学校网站建设介绍范文临沂做网站找哪家好
  • wordpress建站注册新用户湖北省住房部城乡建设厅网站
  • 苏州网站建设多少钱外贸营销网站建设
  • 泰安企业网站建设免费咨询话术
  • 建设行业个人云网站有哪些可以在网上做兼职的网站
  • 山西建设集团网站建行个人网上银行
  • 一个网站多台服务器企业网站建设需要注意什么