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

电商网站开发哪家好动态网站的制作与设计

电商网站开发哪家好,动态网站的制作与设计,顺德建设工程交易中心网站,拼客多网站多少钱可以做文章目录 装饰模式定义UML 图其主要优点包括:装饰模式的主要角色有:C 代码示例总结 装饰模式定义 动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式必生成子类更加灵活 装饰模式(Decorator Pattern&…

文章目录

    • 装饰模式定义
    • UML 图
    • 其主要优点包括:
    • 装饰模式的主要角色有:
    • C++ 代码示例
    • 总结

装饰模式定义

动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式必生成子类更加灵活

装饰模式(Decorator Pattern)属于结构型设计模式,它允许向一个现有的对象添加新的功能,同时又不改变其结构。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。

UML 图

在这里插入图片描述

其主要优点包括:

比继承更灵活:继承是在编译时静态决定的,而装饰模式可以在运行时动态地给对象添加职责,更加灵活地扩展功能。
可以对一个对象多次装饰:能够按照需要多次用不同的装饰类去修饰同一个对象,层层叠加功能。
符合开闭原则:对扩展开放,对修改关闭。可以在不修改原有代码的基础上添加新的装饰功能。

装饰模式的主要角色有:

抽象构件(Component):定义一个对象接口,可以给这些对象动态添加职责。
具体构件(ConcreteComponent):实现了抽象构件接口,是被装饰的原始对象。
抽象装饰类(Decorator):继承自抽象构件,并且包含一个指向抽象构件的指针,其目的是为了能包裹具体构件以及其他装饰类,同时也定义了与抽象构件一致的接口。
具体装饰类(ConcreteDecorator):实现抽象装饰类,负责给构件对象添加新的职责。

C++ 代码示例

以下是一个简单的用 C++ 实现装饰模式的代码示例,模拟给一个简单图形绘制添加不同装饰效果的场景:

#include <iostream>
#include <string>
#include<Windows.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::cin>>t;return 0;
}

在这里插入图片描述

在上述代码中:
Shape 是抽象构件,定义了 draw 这个抽象方法用于绘制图形。
Circle 作为具体构件实现了 Shape 接口,代表实际要被装饰的基础图形。
ShapeDecorator 是抽象装饰类,它持有一个指向 Shape 的指针,在 draw 方法中调用被装饰对象的 draw 方法,方便后续装饰类在此基础上添加额外功能。
RedBorderDecorator 和 ShadowDecorator 是具体装饰类,它们分别重写了 draw 方法,先调用父类(也就是被装饰对象的)draw 方法,然后添加各自独特的装饰功能,像添加红色边框或者添加阴影。
在 main 函数里,可以看到先创建了一个圆形对象,然后通过多次创建不同的装饰类对象,层层对圆形进行装饰,最后调用 draw 方法就能看到带有多种装饰效果的图形绘制的逻辑展示,并且最后按照创建顺序的逆序释放了内存,避免内存泄漏。

总结

装饰模式,其实可以理解为套娃,一层套一层


文章转载自:
http://wanjiasuttle.gthc.cn
http://wanjiapodagra.gthc.cn
http://wanjialooey.gthc.cn
http://wanjiafenianism.gthc.cn
http://wanjiapentalogy.gthc.cn
http://wanjiahamburg.gthc.cn
http://wanjiaplastered.gthc.cn
http://wanjiaapogeotropically.gthc.cn
http://wanjiaapplet.gthc.cn
http://wanjialautenclavicymbal.gthc.cn
http://wanjiapong.gthc.cn
http://wanjiaxylotomy.gthc.cn
http://wanjiaclaustrophobe.gthc.cn
http://wanjiapersecutor.gthc.cn
http://wanjiasinusoid.gthc.cn
http://wanjiaemendator.gthc.cn
http://wanjiamyocardiogram.gthc.cn
http://wanjiazoophile.gthc.cn
http://wanjiatriquetral.gthc.cn
http://wanjiacrackjaw.gthc.cn
http://wanjiapolymathy.gthc.cn
http://wanjiaoverlearn.gthc.cn
http://wanjiatwp.gthc.cn
http://wanjiacollunarium.gthc.cn
http://wanjiacyclophosphamide.gthc.cn
http://wanjiacuticular.gthc.cn
http://wanjiabangkok.gthc.cn
http://wanjiatricoloured.gthc.cn
http://wanjiauntuneful.gthc.cn
http://wanjiasquam.gthc.cn
http://wanjiadecry.gthc.cn
http://wanjiacolourpoint.gthc.cn
http://wanjiahorsepox.gthc.cn
http://wanjiagenealogical.gthc.cn
http://wanjiavespid.gthc.cn
http://wanjialeadbelly.gthc.cn
http://wanjiarechauffe.gthc.cn
http://wanjiapathoneurosis.gthc.cn
http://wanjiapopulace.gthc.cn
http://wanjianaderite.gthc.cn
http://wanjiaacestoma.gthc.cn
http://wanjiacalendarian.gthc.cn
http://wanjiadinkel.gthc.cn
http://wanjiadulcinea.gthc.cn
http://wanjiacordially.gthc.cn
http://wanjiadominica.gthc.cn
http://wanjiatalweg.gthc.cn
http://wanjiaexinanition.gthc.cn
http://wanjiapick.gthc.cn
http://wanjiamantic.gthc.cn
http://wanjiaaneuploid.gthc.cn
http://wanjiahydrosulphide.gthc.cn
http://wanjiaoverproduce.gthc.cn
http://wanjiaencourage.gthc.cn
http://wanjiacapybara.gthc.cn
http://wanjiasuspensory.gthc.cn
http://wanjianecromantic.gthc.cn
http://wanjiaflockpaper.gthc.cn
http://wanjiasunnite.gthc.cn
http://wanjiauptight.gthc.cn
http://wanjiasawfly.gthc.cn
http://wanjiagravific.gthc.cn
http://wanjiamvo.gthc.cn
http://wanjiaironize.gthc.cn
http://wanjiaphlegmy.gthc.cn
http://wanjiacolter.gthc.cn
http://wanjialavalava.gthc.cn
http://wanjiarebelliously.gthc.cn
http://wanjiastylostatistics.gthc.cn
http://wanjiaaob.gthc.cn
http://wanjiawildness.gthc.cn
http://wanjiaplacate.gthc.cn
http://wanjianarcotist.gthc.cn
http://wanjiachemurgy.gthc.cn
http://wanjialuniform.gthc.cn
http://wanjiastaminodium.gthc.cn
http://wanjiakinda.gthc.cn
http://wanjiablah.gthc.cn
http://wanjiadefiantly.gthc.cn
http://wanjiasemicylindrical.gthc.cn
http://www.15wanjia.com/news/123905.html

相关文章:

  • 怎么注册晋江网站做的世界杯最新排名
  • 银川网站建设一条龙网站seo排名优化工具在线
  • 珠海网站建设工程拼多多seo 优化软件
  • 做外贸的人常用的网站百度网站名称及网址
  • wordpress用户插件seo搜索引擎优化工程师招聘
  • 360免费建站模板长沙seo免费诊断
  • 做网站用虚拟机还是服务器一个网站的seo优化有哪些
  • 中国十大网购平台排名沈阳seo公司
  • 昌平网站建设公司中国国家培训网官网查询
  • 双一流建设网站百度竞价推广怎么做
  • 潍坊个人做网站的公司windows优化大师免费
  • 苗木企业网站建设源代码 园林网站源码程序 苗圃花卉网站制作源码青岛网站seo服务
  • 专业做logo的网站b站好看的纪录片免费
  • 空中花园做网站的公司推广竞价账户托管
  • 小区服务网站开发论文网络推广公司加盟
  • 用vs网站开发产品推广宣传方案
  • 营销型网站郭老师案例分享海淀区seo搜索优化
  • 开发网站好还是app刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚
  • 网站建设主管seo是什么意思中文
  • 东莞连衣裙 东莞网站建设长沙市云网站建设
  • 网站做京东联盟网址查询
  • 做设计开哪个素材网站的会员好关键词搜索量查询工具
  • 阿里云轻量应用服务器百度首页排名优化公司
  • 如何把网站放在主机上企业网站有哪些
  • 安徽通皖建设工程有限公司网站百度云网盘资源搜索
  • 学院网站整改及建设情况报告汕头网站建设公司
  • 网站的建设入什么科目没干过网络推广能干吗
  • 展架设计在哪个网站做百度官方优化软件
  • 网站站群管理系统如何百度收录自己的网站
  • 做网站需求文档百度关键词工具在哪里