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

东莞南城网站建设公司怎么样网站建设自由容器是什么意思

东莞南城网站建设公司怎么样,网站建设自由容器是什么意思,一起做网店的类似网站,wordpress lapa文章目录 装饰模式定义UML 图其主要优点包括#xff1a;装饰模式的主要角色有#xff1a;C 代码示例总结 装饰模式定义 动态的给一个对象添加一些额外的职责#xff0c;就增加功能来说#xff0c;装饰模式必生成子类更加灵活 装饰模式#xff08;Decorator Pattern… 文章目录 装饰模式定义UML 图其主要优点包括装饰模式的主要角色有C 代码示例总结 装饰模式定义 动态的给一个对象添加一些额外的职责就增加功能来说装饰模式必生成子类更加灵活 装饰模式Decorator Pattern属于结构型设计模式它允许向一个现有的对象添加新的功能同时又不改变其结构。这种模式创建了一个装饰类用来包装原有的类并在保持类方法签名完整性的前提下提供了额外的功能。 UML 图 其主要优点包括 比继承更灵活继承是在编译时静态决定的而装饰模式可以在运行时动态地给对象添加职责更加灵活地扩展功能。 可以对一个对象多次装饰能够按照需要多次用不同的装饰类去修饰同一个对象层层叠加功能。 符合开闭原则对扩展开放对修改关闭。可以在不修改原有代码的基础上添加新的装饰功能。 装饰模式的主要角色有 抽象构件Component定义一个对象接口可以给这些对象动态添加职责。 具体构件ConcreteComponent实现了抽象构件接口是被装饰的原始对象。 抽象装饰类Decorator继承自抽象构件并且包含一个指向抽象构件的指针其目的是为了能包裹具体构件以及其他装饰类同时也定义了与抽象构件一致的接口。 具体装饰类ConcreteDecorator实现抽象装饰类负责给构件对象添加新的职责。 C 代码示例 以下是一个简单的用 C 实现装饰模式的代码示例模拟给一个简单图形绘制添加不同装饰效果的场景 #include iostream #include string #includeWindows.h // 抽象构件 class Shape { public:virtual void draw() 0;virtual ~Shape() {} };// 具体构件比如这里的圆形 class Circle : public Shape { public:void draw() override{std::cout Drawing a circle std::endl;} };// 抽象装饰类继承自抽象构件 class ShapeDecorator : public Shape { protected:Shape* decoratedShape; public:ShapeDecorator(Shape* shape) : decoratedShape(shape) {}void draw() override{if (decoratedShape){decoratedShape-draw();}} };// 具体装饰类比如添加红色边框装饰 class RedBorderDecorator : public ShapeDecorator { public:RedBorderDecorator(Shape* shape) : ShapeDecorator(shape) {}void draw() override {ShapeDecorator::draw();addRedBorder();} private:void addRedBorder(){std::cout Adding red border std::endl;} };// 另一个具体装饰类比如添加阴影装饰 class ShadowDecorator : public ShapeDecorator { public:ShadowDecorator(Shape* shape) : ShapeDecorator(shape) {}void draw() override {ShapeDecorator::draw();addShadow();} private:void addShadow(){std::cout Adding shadow std::endl;} };int main() {Shape* circle new Circle();// 第一次装饰添加红色边框Shape* redBorderCircle new RedBorderDecorator(circle);// 第二次装饰在有红色边框的基础上添加阴影Shape* decoratedCircle new ShadowDecorator(redBorderCircle);decoratedCircle-draw();// 释放内存注意要按照创建顺序的逆序释放delete decoratedCircle;delete redBorderCircle;delete circle;char t;std::cint;return 0; }在上述代码中 Shape 是抽象构件定义了 draw 这个抽象方法用于绘制图形。 Circle 作为具体构件实现了 Shape 接口代表实际要被装饰的基础图形。 ShapeDecorator 是抽象装饰类它持有一个指向 Shape 的指针在 draw 方法中调用被装饰对象的 draw 方法方便后续装饰类在此基础上添加额外功能。 RedBorderDecorator 和 ShadowDecorator 是具体装饰类它们分别重写了 draw 方法先调用父类也就是被装饰对象的draw 方法然后添加各自独特的装饰功能像添加红色边框或者添加阴影。 在 main 函数里可以看到先创建了一个圆形对象然后通过多次创建不同的装饰类对象层层对圆形进行装饰最后调用 draw 方法就能看到带有多种装饰效果的图形绘制的逻辑展示并且最后按照创建顺序的逆序释放了内存避免内存泄漏。 总结 装饰模式其实可以理解为套娃一层套一层
http://www.w-s-a.com/news/656597/

相关文章:

  • 网站空间一般多大邢台网站建设有哪些
  • h5网站开发工具有哪些wordpress清空post表
  • 公司开网站干嘛怎么制作一个免费的网站模板
  • 群晖wordpress搭建网站网站建设及管理
  • 中山企业网站建设公司抖音代运营合作模式
  • 南通营销网站开发做网站页面多少钱
  • 桂林生活网官方网站云主机和云电脑的区别
  • 内部网络网站怎么做vue做单页面网站
  • 如何建立网站教程wordpress粘帖图片
  • 广东网站备案要多久网站开发 pdf 文字版
  • 学校网站方案帮别人做钓鱼网站吗
  • 如何加强网站建设和信息宣传wordpress 搜索提示
  • 灰色网站怎么做php yaf 网站开发框架
  • 浙江建设网站首页提供做网站公司有哪些
  • 建公司网站报价公司seo是什么级别
  • 可信赖的武进网站建设中山网站建设方案
  • 网站设计方面有什么公司运动鞋网站建设目的
  • 学校门户网站流程建设方案找人做网站 多少钱
  • 网站域名更换相应内容网站策划 要求
  • 百盛联合建设集团网站开发网站的步骤
  • php做网站评价网络公司经营范围可以加技
  • 网站积分的作用保定专业网站建设
  • 莆田做网站公司电话如何提升网站访问速度
  • 网站开发流程步骤 口袋网页访问wordpress
  • 湘潭做网站的公司自助建站教程
  • 做网站推广和头条推广wordpress 验证密码错误
  • 淘宝联盟网站怎么做深圳市创想三维科技有限公司
  • 校园网站建设招标公告php网站开发什么
  • 06628 网页制作与网站开发陕西省交通建设网站
  • 做wish如何利用数据网站暗红色网站