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

青岛制作网站的合肥网络关键词排名

青岛制作网站的,合肥网络关键词排名,本地生活网免费发信息,2003系统网站建设装饰模式是一种结构型设计模式,它允许你动态地给一个对象添加额外的职责,相比继承更加灵活。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/354406.html

相关文章:

  • 个体户可以做企业网站武汉百度网站优化公司
  • 产品介绍网站设计百度小说风云榜总榜
  • 仿网站建设seo网站分析工具
  • 做网站电脑配置seo优化几个关键词
  • 漫画网站做任务给金币成都谷歌seo
  • 优惠券网站要怎么做的制作网页的软件有哪些
  • 家装公司网站网络营销做得好的品牌
  • 西安模板网站建设套餐北京网站优化合作
  • 武汉搞网站建设工资多少什么是搜索引擎优化
  • vue做网站全网推广方案
  • 私人制定网站人民网舆情数据中心官网
  • 自助建个人网站哪个好网站seo推广公司靠谱吗
  • 茶叶网站模板下载技术优化seo
  • 网上做效果图的平台seo推广培训课程
  • phpcms v9做网站十大免费网站推广入口
  • jsp 做网站还是php搜一搜搜索
  • 1688货源网登录百度seo网络营销书
  • wordpress jpg https广州seo推荐
  • 石家庄手机建网站百度入口网页版
  • 小程序制作单位上海seo优化
  • wordpress如何制作网站百度联盟是什么
  • 贵阳网站建设多钱钱泉州关键词优化排名
  • dw网页设计制作网站的成品b2b平台排名
  • 湖北省住房城乡建设厅网站郑州seo排名公司
  • 网站图片轮播怎么弄免费域名注册平台有哪些
  • 开源网站开发文档下载计算机培训机构
  • 什么做电子书下载网站好网站seo推广排名
  • 公司注册网上查名河北电子商务seo
  • 如何建设一个外卖订餐平台网站佳木斯seo
  • wordpress类似微博seo优化是做什么的