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

那个网站可教做课件好舟山网站建设有哪些

那个网站可教做课件好,舟山网站建设有哪些,建筑人才网招聘官网,比特币矿池网站怎么做👨‍🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…

👨‍🎓 模式名称:装饰器模式(Decorator Pattern)

👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料:
有的同学要加波霸 🟤,有的要加椰果 🥥,还有的要加奶盖 🥛。
但每个“加料”组合都要写一个新类?小明一开始不以为意,直到……

❌ 没使用装饰器模式的惨状:

#include <iostream>
#include <string>class MilkTea {
public:virtual std::string getDescription() = 0;virtual double cost() = 0;virtual ~MilkTea() {}
};class OriginalMilkTea : public MilkTea {
public:std::string getDescription() override {return "原味奶茶";}double cost() override {return 8.0;}
};class MilkTeaWithBoba : public MilkTea {
public:std::string getDescription() override {return "原味奶茶 + 波霸";}double cost() override {return 10.0;}
};class MilkTeaWithBobaAndCheese : public MilkTea {
public:std::string getDescription() override {return "原味奶茶 + 波霸 + 奶盖";}double cost() override {return 13.0;}
};int main() {MilkTea* tea1 = new OriginalMilkTea();MilkTea* tea2 = new MilkTeaWithBoba();MilkTea* tea3 = new MilkTeaWithBobaAndCheese();std::cout << tea3->getDescription() << " 价格:¥" << tea3->cost() << std::endl;delete tea1;delete tea2;delete tea3;return 0;
}

在这里插入图片描述

💥 小明懵了:

加个椰果再写个类?
波霸 + 奶盖 + 椰果再写?
🍵 加料 2^N 种组合,类数直接爆炸!

✅ 使用装饰器模式后:灵活加料,优雅解耦!

#include <iostream>
#include <string>
#include <memory>// 奶茶基类
class MilkTea {
public:virtual std::string getDescription() = 0;virtual double cost() = 0;virtual ~MilkTea() {}
};// 原味奶茶
class OriginalMilkTea : public MilkTea {
public:std::string getDescription() override {return "原味奶茶";}double cost() override {return 8.0;}
};// 装饰器基类
class ToppingDecorator : public MilkTea {
protected:std::shared_ptr<MilkTea> tea;
public:ToppingDecorator(std::shared_ptr<MilkTea> t) : tea(t) {}
};// 加波霸
class Boba : public ToppingDecorator {
public:Boba(std::shared_ptr<MilkTea> t) : ToppingDecorator(t) {}std::string getDescription() override {return tea->getDescription() + " + 波霸🟤";}double cost() override {return tea->cost() + 2.0;}
};// 加奶盖
class Cheese : public ToppingDecorator {
public:Cheese(std::shared_ptr<MilkTea> t) : ToppingDecorator(t) {}std::string getDescription() override {return tea->getDescription() + " + 奶盖🥛";}double cost() override {return tea->cost() + 3.0;}
};// 加椰果
class Coconut : public ToppingDecorator {
public:Coconut(std::shared_ptr<MilkTea> t) : ToppingDecorator(t) {}std::string getDescription() override {return tea->getDescription() + " + 椰果🥥";}double cost() override {return tea->cost() + 1.5;}
};int main() {// 原味奶茶 + 波霸 + 奶盖 + 椰果!std::shared_ptr<MilkTea> order = std::make_shared<OriginalMilkTea>();order = std::make_shared<Boba>(order);order = std::make_shared<Cheese>(order);order = std::make_shared<Coconut>(order);std::cout << "🎉 " << order->getDescription() << " 价格:¥" << order->cost() << std::endl;return 0;
}

在这里插入图片描述

🧠 总结:装饰器模式的价值

问题没使用使用装饰器
类数量爆炸(组合越多类越多)只需一个装饰器类一类加料
灵活性不能动态组合可以任意组合加料
可维护性每改一组合要改多个类可拓展性强,易维护

✅ 适用场景

  • 不同功能组合需要动态叠加(如小明的加料奶茶🍵、网页组件、技能系统等)

  • 不想通过继承创建过多子类

  • 需要在运行时添加功能而非编译期


文章转载自:

http://V4uXGx9N.qggcc.cn
http://z1pQf7ZZ.qggcc.cn
http://XEDNwDJV.qggcc.cn
http://FcelpYSX.qggcc.cn
http://8qpLa5mv.qggcc.cn
http://RgsFx5I8.qggcc.cn
http://hcoJlrbJ.qggcc.cn
http://wAo3djTD.qggcc.cn
http://YSv5GZ6j.qggcc.cn
http://qAnfiC47.qggcc.cn
http://dY7YOElW.qggcc.cn
http://anDMiu7V.qggcc.cn
http://klkn01hm.qggcc.cn
http://k1doovFs.qggcc.cn
http://xbUtpY4j.qggcc.cn
http://K345hntz.qggcc.cn
http://rYpwo3NM.qggcc.cn
http://dkPXLneJ.qggcc.cn
http://Ffj4zVuR.qggcc.cn
http://cPvQ17GD.qggcc.cn
http://MhIcOeGH.qggcc.cn
http://mgU53bIH.qggcc.cn
http://sqaiXZd8.qggcc.cn
http://b3hJGEXv.qggcc.cn
http://Wbt8bfxM.qggcc.cn
http://H83WCcIo.qggcc.cn
http://xLgy3Zk5.qggcc.cn
http://KSkf3eM4.qggcc.cn
http://2acysC0r.qggcc.cn
http://37MDK8cS.qggcc.cn
http://www.dtcms.com/wzjs/712181.html

相关文章:

  • 如何做好网站建设内容的策划推广任务平台
  • 做网站学网站运营的作用
  • 电影项目做产品众筹哪个网站好网页无法访问摄像头
  • 宿松做网站手机免费表格软件app
  • 猪八戒网网站开发需求thinkphp网站后台模板
  • 柳州网站建设价格免费咨询做网站
  • wordpress视频网站用什么播放器成都旅游团
  • 兰州网站建设q479185700惠网站手机优化
  • 建设部网站 自住房推广软件的种类
  • 贵阳网站搜索优化黄岩做网站
  • 德宏北京网站建设建设银行的网站为什么登不上
  • 免费企业建站源代码韩国网站
  • 中国3大做外贸的网站甘肃住房与城乡建设部网站
  • 网站开发筛子游戏wordpress 底部 copyright 时间
  • 中国糕点网页设计网站邢台做移动网站找谁
  • 一个网站怎么做网站备案是需要去哪里做
  • 傻瓜式建个人网站盘多多网盘资源库
  • 网站建设 设计那种连接线厂家自建平台
  • 平顶山 网站设计深圳做网站开发公司
  • 网站建设 微信开发深圳比较好的网站建设公司
  • 网站开发工资高么深圳建设工程交易服务网宝安分中心
  • 路由器设置手机网站打不开网站建设 荆州
  • 帮开设赌场的网站做美工wordpress批量发邮
  • 橙色 网站wordpress学校管理系统
  • 网站建设综合实训总结与体会黄骅市属于哪个省
  • 网站开发的历史成品网站模板下载
  • 网站建设与维护技术浅谈论文古塔网站建设
  • 网站开发设计怎么找客户域名可以做网站名吗
  • 地方美食网站开发意义信息化建设 网站
  • 制作网站的公司办什么营业执照天津网站seo营销模板