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

ftp 网站 怎么上传文件坪山新区城市建设局网站

ftp 网站 怎么上传文件,坪山新区城市建设局网站,附近小程序定制公司,前端做网站需要学什么装饰器模式#xff08;Decorator Pattern#xff09; 定义 装饰器模式是一种结构性设计模式#xff0c;通过 动态组合对象 的方式#xff0c;为对象添加额外功能#xff0c;而无需修改原有类。 装饰器模式的核心思想 对象增强#xff1a;在现有类的基础上动态添加功能Decorator Pattern 定义 装饰器模式是一种结构性设计模式通过 动态组合对象 的方式为对象添加额外功能而无需修改原有类。 装饰器模式的核心思想 对象增强在现有类的基础上动态添加功能而不修改类的代码。功能组合通过多个装饰器的嵌套可以灵活组合功能。继承与组合 继承是一种 静态扩展。装饰器模式是一种 动态扩展。 类结构 装饰器模式的类结构包含以下几部分 抽象组件Component 定义接口声明核心功能方法。所有被装饰类和装饰器类都必须实现此接口。 具体组件ConcreteComponent 实现抽象组件的接口定义基本功能。 装饰器基类Decorator 实现抽象组件接口。持有一个组件的引用指针并通过组合扩展功能。 具体装饰器类ConcreteDecorator 从装饰器基类派生。对原始功能进行增强。 装饰器模式与代理模式的区别 区别点装饰器模式代理模式目的增强类的功能控制访问权限实现的重点功能扩展权限控制类的设计装饰器类持有被装饰对象的指针代理类持有被代理对象的指针调用顺序递归调用逐层增强功能代理类决定是否调用实际方法 应用场景 需要动态扩展功能例如添加日志、权限验证等。功能可以被多次组合如 GUI 控件系统中的多种视觉效果。避免类爆炸避免因子类过多导致复杂的继承体系。 优缺点 优点 动态扩展对象功能避免继承的静态绑定。可以组合多个装饰器灵活性高。符合开闭原则。 缺点 需要创建大量的小类可能会增加系统复杂性。调试较为复杂特别是多个装饰器嵌套时。 代码实现 需求以汽车为例实现动态添加 定速巡航、自动刹车 和 车道偏离预警 三种功能。 完整代码 #include iostream #include string// 抽象组件 class Car { public:virtual void show() 0; // 显示汽车配置virtual ~Car() default; };// 具体组件宝马 class BMW : public Car { public:void show() override {std::cout This is a BMW car with basic configuration.\n;} };// 具体组件奥迪 class Audi : public Car { public:void show() override {std::cout This is an Audi car with basic configuration.\n;} };// 具体组件奔驰 class Benz : public Car { public:void show() override {std::cout This is a Benz car with basic configuration.\n;} };// 抽象装饰器 class CarDecorator : public Car { protected:Car* car; // 持有被装饰的对象 public:CarDecorator(Car* c) : car(c) {}void show() override {car-show(); // 调用被装饰对象的 show 方法}virtual ~CarDecorator() {delete car;} };// 具体装饰器 1定速巡航 class CruiseControl : public CarDecorator { public:CruiseControl(Car* c) : CarDecorator(c) {}void show() override {CarDecorator::show();std::cout Added feature: Cruise Control.\n;} };// 具体装饰器 2自动刹车 class AutomaticBraking : public CarDecorator { public:AutomaticBraking(Car* c) : CarDecorator(c) {}void show() override {CarDecorator::show();std::cout Added feature: Automatic Braking.\n;} };// 具体装饰器 3车道偏离预警 class LaneDepartureWarning : public CarDecorator { public:LaneDepartureWarning(Car* c) : CarDecorator(c) {}void show() override {CarDecorator::show();std::cout Added feature: Lane Departure Warning.\n;} };// 主函数 int main() {// 创建一个基础 BMW 对象Car* bmw new BMW();// 给 BMW 添加定速巡航功能bmw new CruiseControl(bmw);// 再添加自动刹车功能bmw new AutomaticBraking(bmw);// 最后添加车道偏离预警功能bmw new LaneDepartureWarning(bmw);// 显示 BMW 的完整配置bmw-show();// 释放内存delete bmw;return 0; }输出结果 This is a BMW car with basic configuration. Added feature: Cruise Control. Added feature: Automatic Braking. Added feature: Lane Departure Warning.代码解析 抽象组件 Car 提供统一的接口定义所有汽车共有的功能。 具体组件 例如 BMW、Audi 和 Benz实现基本功能。 抽象装饰器 CarDecorator 持有一个 Car 指针用于动态装饰功能。 具体装饰器 每个具体装饰器类实现独特的功能如 CruiseControl、AutomaticBraking。 动态组合 将多个装饰器嵌套在一起实现功能的动态组合。 总结 装饰器模式使得对象功能扩展变得灵活避免了继承的复杂性。通过组合的方式可以动态添加功能减少子类数量降低维护成本。在实际开发中装饰器模式非常适合需要动态扩展功能的场景如 GUI 开发、日志记录、权限验证等。
http://www.zqtcl.cn/news/189570/

相关文章:

  • 红色好看的网站中山网站建设工作室
  • 如何做喊单网站flask公司网站开发
  • 简单个人网站制作流程自己怎么做卖服装的网站
  • 网站开发公司创业做洁净的网站
  • 要建一个优惠卷网站怎么做企业开发小程序公司
  • 汕尾英文网站建设企业qq手机版
  • 重庆医院门户网站建设做百度网站电话号码
  • windows网站建设教程网站建设落地页
  • 新加坡做网站的价格网站正则表达式怎么做
  • 三门峡市住房的城乡建设局网站百度指数分析官网
  • 新网站外链怎么做陕西省煤炭建设第一中学官方网站
  • 学校网站建设方面汇报php网站开发和部署
  • 源码建站和模板建站区别商城网站功能
  • 临沂建站公司互联网开网站怎么做
  • 有哪个网站做ic购物网站建设需求
  • 怎么登录甘肃省建设厅网站工信部域名信息备案管理系统查询
  • 怎么才能免费建网站网站套利怎么做
  • .win域名做网站怎么样邯郸的互联网公司
  • 企业网站建设推广实训报告网站目录
  • 找做课件的网站网站建设柒首先金手指9
  • 秦皇岛网站建设公司wordpress百度编辑器
  • 潍坊网站建设联系方式农业网站开发
  • 河北网站制作网站设计依赖于什么设计
  • 深圳网站优化培训wordpress内页关键词
  • 上栗网站建设企业网站建设报价方案
  • 广州网站开发公司公司级别网站开发
  • 做网站备案哪些条件怎样选择网站的关键词
  • 有没有专门做名片的网站忘记网站后台账号
  • 重庆建设工程招标网站印尼建设银行网站
  • 什么是网站流量优化四川住房建设厅网站