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

工业设计公司如何选择sem优化专员

工业设计公司如何选择,sem优化专员,微信分销网站建设哪家好,宝塔本地使用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://www.dtcms.com/wzjs/535878.html

相关文章:

  • 唐山外贸网站建设哈尔滨个人建站模板
  • 直播网站 咋做我的营业执照网上查询
  • 专门做眼镜的网站东莞网站网络
  • 东莞公司官网建站长泰597人才网最新招聘信息
  • 成都网站建设高端刷单做任务的网站
  • 怎么查工程项目信息seo现在还有前景吗
  • 做网站用c语言可以吗西部数码网站助手
  • 普通网站一年要多少钱网站建设服务器租赁
  • 自己做的视频网站如何赚钱吗小企业网站建设哪些好办
  • 网站服务器搭建及配置的具体步骤成都微信小程序分类信息开发
  • 销售类网站开发架构沈阳创新网站建设报价
  • wordpress 留言板 插件常见的系统优化软件
  • 商务网站开发流程有三个阶段福田建设网站
  • 微网站开发平台广州建立网站的公司
  • 乐思网站建设wordpress 修改页面
  • 合肥做微网站建设网站建设与网页设计从入门到精通 素材下载
  • 全国加盟网站大全媒体发稿公司
  • 如何用visual做网站网站这么绑定到域名
  • 软件下载网站如何履行安全管理义务确保提供的软件wordpress主题 彩票
  • 网站维护英文个人交养老保险价格表
  • 网站建设预算表格个人申请公司流程
  • icp网站授权函手机免费个人网站建站
  • 优秀网站设计 pdf中国建设银行官方网站悦生活
  • php在线购物网站建设个人注册入口官网
  • 用phpmysql做网站wordpress 生成二维码
  • 个人网站建设详细教程无锡市建设银行总行网站
  • 如何做网站的营销西安网站制作开发
  • 建设银行天津分行门户网站时空赣州网
  • 美食网站开发开题报告接工程的app软件
  • 怎么制作外贸网站软件设计师中级