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

怎样做o2o网站河南省住房与城乡建设厅网站首页

怎样做o2o网站,河南省住房与城乡建设厅网站首页,谷歌浏览器下载安装2023最新版,网站开发的技术类型有哪些装饰器模式#xff08;Decorator Pattern#xff09;是一种结构型设计模式#xff0c;允许在不修改对象代码的情况下#xff0c;动态为对象添加新功能。通过将对象包装在装饰器类中实现#xff0c;遵循开放-封闭原则#xff08;对扩展开放#xff0c;对修改封闭#xf…装饰器模式Decorator Pattern是一种结构型设计模式允许在不修改对象代码的情况下动态为对象添加新功能。通过将对象包装在装饰器类中实现遵循开放-封闭原则对扩展开放对修改封闭。 适用场景 动态扩展对象功能如为咖啡加配料、为函数加日志。需要组合多种功能。 核心组件 抽象组件定义接口。具体组件被装饰的原始对象。抽象装饰器持有一个组件对象扩展接口。具体装饰器实现具体功能的扩展。C11 实现示例 以下是一个咖啡店订单系统示例展示如何用装饰器模式为咖啡动态添加牛奶和糖。 #include iostream #include memory #include string// 抽象组件咖啡接口 class Coffee { public:virtual std::string getDescription() const 0;virtual double cost() const 0;virtual ~Coffee() default; };// 具体组件基础咖啡 class SimpleCoffee : public Coffee { public:std::string getDescription() const override { return Simple Coffee; }double cost() const override { return 1.0; } };// 抽象装饰器 class CoffeeDecorator : public Coffee { protected:std::unique_ptrCoffee coffee_; public:explicit CoffeeDecorator(std::unique_ptrCoffee coffee) : coffee_(std::move(coffee)) {}std::string getDescription() const override { return coffee_-getDescription(); }double cost() const override { return coffee_-cost(); } };// 具体装饰器加牛奶 class MilkDecorator : public CoffeeDecorator { public:explicit MilkDecorator(std::unique_ptrCoffee coffee) : CoffeeDecorator(std::move(coffee)) {}std::string getDescription() const override { return coffee_-getDescription() , Milk; }double cost() const override { return coffee_-cost() 0.5; } };// 具体装饰器加糖 class SugarDecorator : public CoffeeDecorator { public:explicit SugarDecorator(std::unique_ptrCoffee coffee) : CoffeeDecorator(std::move(coffee)) {}std::string getDescription() const override { return coffee_-getDescription() , Sugar; }double cost() const override { return coffee_-cost() 0.3; } };// 测试 int main() {auto coffee std::make_uniqueSimpleCoffee();std::cout coffee-getDescription() : $ coffee-cost() \n;coffee std::make_uniqueMilkDecorator(std::move(coffee));std::cout coffee-getDescription() : $ coffee-cost() \n;coffee std::make_uniqueSugarDecorator(std::move(coffee));std::cout coffee-getDescription() : $ coffee-cost() \n;return 0; }输出 Simple Coffee: $1 Simple Coffee, Milk: $1.5 Simple Coffee, Milk, Sugar: $1.8代码解析 接口Coffee定义getDescription和cost方法。基础对象SimpleCoffee实现基本咖啡功能。装饰器CoffeeDecorator通过std::unique_ptr持有Coffee对象支持递归包装。具体装饰器MilkDecorator, SugarDecorator扩展描述和价格。C11特性 std::unique_ptr管理内存防止泄漏。std::move优化对象传递。override确保虚函数正确重写。✅ 优点 灵活性运行时动态添加功能。可扩展易于新增装饰器如加巧克力。单一职责每个装饰器只负责一种功能。 ⚠️ 缺点 多层装饰可能增加代码复杂性。可能有轻微性能开销调用链。 ️ 注意事项 确保组件和装饰器接口一致。避免过度装饰保持代码清晰。C装饰器模式基于类的组合与Python的函数装饰器基于闭包不同。其他应用场景 日志系统为函数添加日志。权限控制为操作添加权限检查。数据流为I/O流添加加密、压缩等功能。
http://www.pierceye.com/news/684354/

相关文章:

  • 数据库对于做网站的重要性商城模板网站模板
  • 梧州高端网站建设服务企业网站建设源码
  • 团购网站优化德州seo排名
  • 网站首页引导页中文简洁网站设计图
  • 娱乐网站排行榜在线商城网站开发代码
  • 手机网站设计通用尺寸上海外贸人才网
  • 智慧团建网站密码格式高端终端网站设计类网站
  • 福田网站设计网站建设平台方案
  • 荆州企业网站建设天津网站优化步骤
  • 网站怎么怎么做关键字长沙网站建设q.479185700強
  • 网站备案万网excel做网站
  • 十堰网站建设怎么做桐乡网站设计
  • 织梦商城网站模板网站设计的逻辑结构
  • 网站编辑器福建省工程建设信息官方网站
  • 网站的域名能修改么做设计网站的工作
  • 珠海选车牌号网站系统icp对网站内容
  • 东莞购物网站如何建立免费个人网站
  • 网站个别页面做seo建立有效的什么机制
  • 学校网站建设模板wordpress 年月归档
  • 凡科做的网站行不行京东慧采入驻条件及费用2023年
  • 汽车网站建设页面网站建设营销公司
  • 可以写代码的网站有哪些问题微信公众号的推广
  • 网站建设项目怎么写新网站一般多久收录
  • 什么网站可以免费发广告合肥做网站一般多少钱
  • 企业网站优化的方式大安市网站
  • 镇江专业网站建设制作wordpress调查插件
  • 桂林网站制作多少钱最好的网站开发公司
  • 广州网站开发公司排名广州从化建设网站官网
  • 网站备案在杭州注册公司需要什么条件
  • 购买域名做销售网站可以吗河北邢台刚刚发布的紧急通知