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

快递物流网站建设开发具备哪些功能韶关做网站的

快递物流网站建设开发具备哪些功能,韶关做网站的,广州最繁华的三个区,东道设计公司招聘要求3. 装饰模式 3.1. 模式动机 一般有两种方式可以实现给一个类或对象增加行为#xff1a; 继承机制 使用继承机制是给现有类添加功能的一种有效途径#xff0c;通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的#xff0c;用户不能… 3. 装饰模式 3.1. 模式动机 一般有两种方式可以实现给一个类或对象增加行为 继承机制 使用继承机制是给现有类添加功能的一种有效途径通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的用户不能控制增加行为的方式和时机。 关联机制 即将一个类的对象嵌入另一个对象中由另一个对象来决定是否调用嵌入对象的行为以便扩展自己的行为我们称这个嵌入的对象为装饰器(Decorator) 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任换言之客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不需要创造更多子类的情况下将对象的功能加以扩展。这就是装饰模式的模式动机。 3.2. 模式定义 装饰模式(Decorator Pattern) 动态地给一个对象增加一些额外的职责(Responsibility)就增加对象功能来说装饰模式比生成子类实现更为灵活。其别名也可以称为包装器(Wrapper)与适配器模式的别名相同但它们适用于不同的场合。根据翻译的不同装饰模式也有人称之为“油漆工模式”它是一种对象结构型模式。 3.3. 模式结构 装饰模式包含如下角色 Component: 抽象构件 ConcreteComponent: 具体构件 Decorator: 抽象装饰类 ConcreteDecorator: 具体装饰类 3.4. 时序图 3.5. 代码分析 /// // ConcreteComponent.cpp // Implementation of the Class ConcreteComponent // Created on: 03-十月-2014 18:53:00 // Original author: colin ///#include ConcreteComponent.h #include iostream using namespace std;ConcreteComponent::ConcreteComponent(){}ConcreteComponent::~ConcreteComponent(){}void ConcreteComponent::operation(){cout ConcreteComponents normal operation! endl; } /// // ConcreteDecoratorA.h // Implementation of the Class ConcreteDecoratorA // Created on: 03-十月-2014 18:53:00 // Original author: colin ///#if !defined(EA_6786B68E_DCE4_44c4_B26D_812F0B3C0382__INCLUDED_) #define EA_6786B68E_DCE4_44c4_B26D_812F0B3C0382__INCLUDED_#include Decorator.h #include Component.hclass ConcreteDecoratorA : public Decorator {public:ConcreteDecoratorA(Component* pcmp);virtual ~ConcreteDecoratorA();void addBehavior();virtual void operation();}; #endif // !defined(EA_6786B68E_DCE4_44c4_B26D_812F0B3C0382__INCLUDED_) /// // ConcreteDecoratorA.cpp // Implementation of the Class ConcreteDecoratorA // Created on: 03-十月-2014 18:53:00 // Original author: colin ///#include ConcreteDecoratorA.h #include iostream using namespace std;ConcreteDecoratorA::ConcreteDecoratorA(Component* pcmp) :Decorator(pcmp) {}ConcreteDecoratorA::~ConcreteDecoratorA(){}void ConcreteDecoratorA::addBehavior(){cout addBehavior AAAA endl; }void ConcreteDecoratorA::operation(){Decorator::operation(); 运行结果 3.6. 模式分析 与继承关系相比关联关系的主要优势在于不会破坏类的封装性而且继承是一种耦合度较大的静态关系无法在程序运行时动态扩展。在软件开发阶段关联关系虽然不会比继承关系减少编码量但是到了软件维护阶段由于关联关系使系统具有较好的松耦合性因此使得系统更加容易维护。当然关联关系的缺点是比继承关系要创建更多的对象。 使用装饰模式来实现扩展比继承更加灵活它以对客户透明的方式动态地给一个对象附加更多的责任。装饰模式可以在不需要创造更多子类的情况下将对象的功能加以扩展。 3.7. 实例 实例变形金刚 变形金刚在变形之前是一辆汽车它可以在陆地上移动。当它变成机器人之后除了能够在陆地上移动之外还可以说话如果需要它还可以变成飞机除了在陆地上移动还可以在天空中飞翔。 3.8. 优点 装饰模式与继承关系的目的都是要扩展对象的功能但是装饰模式可以提供比继承更多的灵活性。 可以通过一种动态的方式来扩展一个对象的功能通过配置文件可以在运行时选择不同的装饰器从而实现不同的行为。 通过使用不同的具体装饰类以及这些装饰类的排列组合可以创造出很多不同行为的组合。可以使用多个具体装饰类来装饰同一对象得到功能更为强大的对象。 具体构件类与具体装饰类可以独立变化用户可以根据需要增加新的具体构件类和具体装饰类在使用时再对其进行组合原有代码无须改变符合“开闭原则” 3.9. 缺点 使用装饰模式进行系统设计时将产生很多小对象这些对象的区别在于它们之间相互连接的方式有所不同而不是它们的类或者属性值有所不同同时还将产生很多具体装饰类。这些装饰类和小对象的产生将增加系统的复杂度加大学习与理解的难度。 这种比继承更加灵活机动的特性也同时意味着装饰模式比继承更加易于出错排错也很困难对于多次装饰的对象调试时寻找错误可能需要逐级排查较为烦琐。 3.10. 适用环境 在以下情况下可以使用装饰模式 在不影响其他对象的情况下以动态、透明的方式给单个对象添加职责。 需要动态地给一个对象增加功能这些功能也可以动态地被撤销。 当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时。不能采用继承的情况主要有两类第一类是系统中存在大量独立的扩展为支持每一种组合将产生大量的子类使得子类数目呈爆炸性增长第二类是因为类定义不能继承如final类. 3.11. 模式扩展 装饰模式的简化-需要注意的问题: 一个装饰类的接口必须与被装饰类的接口保持相同对于客户端来说无论是装饰之前的对象还是装饰之后的对象都可以一致对待。 尽量保持具体构件类Component作为一个“轻”类也就是说不要把太多的逻辑和状态放在具体构件类中可以通过装饰类对其进行扩展。 如果只有一个具体构件类而没有抽象构件类那么抽象装饰类可以作为具体构件类的直接子类。 3.12. 总结 装饰模式用于动态地给一个对象增加一些额外的职责就增加对象功 能来说装饰模式比生成子类实现更为灵活。它是一种对象结构型模式。 装饰模式包含四个角色抽象构件定义了对象的接口可以给这些对 象动态增加职责方法具体构件定义了具体的构件对象实现了 在抽象构件中声明的方法装饰器可以给它增加额外的职责方法 抽象装饰类是抽象构件类的子类用于给具体构件增加职责但是具 体职责在其子类中实现具体装饰类是抽象装饰类的子类负责向构 件添加新的职责。 使用装饰模式来实现扩展比继承更加灵活它以对客户透明的方式动 态地给一个对象附加更多的责任。装饰模式可以在不需要创造更多子 类的情况下将对象的功能加以扩展。 装饰模式的主要优点在于可以提供比继承更多的灵活性可以通过一种动态的 方式来扩展一个对象的功能并通过使用不同的具体装饰类以及这些装饰类的 排列组合可以创造出很多不同行为的组合而且具体构件类与具体装饰类可以独立变化用户可以根据需要增加新的具体构件类和具体装饰类其主要缺点在于使用装饰模式进行系统设计时将产生很多小对象而且装饰模式比继承更加易于出错排错也很困难对于多次装饰的对象调试时寻找错误可能需 要逐级排查较为烦琐。 装饰模式适用情况包括在不影响其他对象的情况下以动态、透明的方式给 单个对象添加职责需要动态地给一个对象增加功能这些功能也可以动态地 被撤销当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展 和维护时。 装饰模式可分为透明装饰模式和半透明装饰模式在透明装饰模式中要求客 户端完全针对抽象编程装饰模式的透明性要求客户端程序不应该声明具体构 件类型和具体装饰类型而应该全部声明为抽象构件类型半透明装饰模式允 许用户在客户端声明具体装饰者类型的对象调用在具体装饰者中新增的方法。 [上一节]设计模式-结构型模式之桥接模式 [下一节]设计模式-结构型模式之外观模式
http://www.hkea.cn/news/14325254/

相关文章:

  • 高级网站设计效果图app下载app开发公司
  • 富民网站建设电脑课程培训零基础
  • 莱州网站建设费用成都企业网站建设 四川冠辰科技
  • 网站建设收费明细网站建设安全方案
  • 长沙做网站要多少钱wordpress 百度文库
  • 做外包胡it网站网站打开很慢怎么回事啊
  • 如何用apache建设网站最新seo视频教程
  • 医院网站建设策划案模板住房和城乡建设部官网查询平台
  • 网站建设及管理工作岗位要求网络公司经营范围写电子商务
  • 用flash做的网站展示wordpress 小工具开发
  • 龙岗网站建设服务岳阳网站建设哪里有
  • 网站 短链接怎么做No商业网站建设
  • 如何做网站方案天津网站推广方法
  • 网站域名费用网店装修素材网站
  • 网站系统怎么做的青岛房产网新楼盘
  • 网站被k申述高端html5网站建设
  • 上海网站建设兴策重庆网站免费优化
  • 礼品网站设计wordpress商品多选
  • 重庆网站建设公司价钱wordpress博客文章怎么设置
  • 杭州绿城乐居建设管理有限公司网站装潢设计软件有哪些
  • 在电子商务网站建设中需要哪些知识桂林生活网租房信息
  • 网站建设有哪些模块上海专业网站制作设计
  • 跨境o2o网站建设方案给公司做企业网站
  • 广州 建 网站wordpress 全站pjax
  • jsp网站开发需要什么技术编程教程免费视频
  • 做网站怎么赚钱 111哪里可以做拍卖网站
  • 深圳专业的网站建设哪个网站做原创歌曲
  • 曲阳路街道网站建设网络推广是做什么工作
  • wordpress无法开启多站点远程教育网站建设
  • 假网站怎么做呢企业品牌网站建设应该怎么做