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

装饰网站建设公司网站建设我们的优势

装饰网站建设公司,网站建设我们的优势,wordpress栏目在哪里设置,做网站需要多少钱 网络服务解释说明#xff1a;动态地给一个对象增加一些额外的职责。就扩展功能而言#xff0c;装饰模式提供了一种比使用子类更加灵活的替代方案 抽象构件#xff08;Component#xff09;#xff1a;定义一个抽象接口以规范准备收附加责任的对象 具体构件#xff08;ConcreteCom… 解释说明动态地给一个对象增加一些额外的职责。就扩展功能而言装饰模式提供了一种比使用子类更加灵活的替代方案 抽象构件Component定义一个抽象接口以规范准备收附加责任的对象 具体构件ConcreteComponent实现抽象构件通过装饰角色为其添加一些职责 抽象装饰类Decorator继承或实现抽象构件并包含具体构件的实例可以通过其子类扩展具体构件的功能 具体装饰类ConcreteDecorator实现抽象装饰的相关方法并给具体构件对象添加附加的责任 优点 Decorator 模式与继承关系的目的都是要扩展对象的功能但是 Decorator 可以提供比继承更多的灵活性。 通过使用不同的具体装饰类以及这些装饰类的排列组合可以创造出很多不同行为的组合。 缺点 这种比继承更加灵活机动的特性也同时意味着更加多的复杂性。 装饰模式会导致设计中出现许多小类如果过度使用会使程序变得很复杂。 装饰模式是针对抽象构建Component类型编程。但是如果要针对具体构件ConcreteComponent编程应该重新思考应用架构以及装饰者是否合适。当然也可改变 Component 接口增加新的公开的行为实现“半透明”的装饰者模式。在实际项目中要做出最佳选择。 适用场景 需要扩展一个类的功能或给一个类添加附加职责。 需要动态的给一个对象添加功能这些功能可以再动态的撤销。 需要增加由一些基本功能的排列组合而产生的非常大量的功能从而使继承关系变的不现实。 当不能采用生成子类的方法进行扩充时。一种情况是可能有大量独立的扩展为支持每一种组合将产生大量的子类使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏或类定义不能用于生成子类 #pragma once #include string using namespace std; // 所有饮料的基类 class IBeverage { public:virtual string Name() 0; // 名称virtual double Cost() 0; // 价钱 }; /********** 具体的饮料咖啡**********/ // 黑咖啡属于混合咖啡 class HouseBlend : public IBeverage { public:string Name() {return HouseBlend;}double Cost() {return 30.0;} }; // 深度烘培咖啡豆 class DarkRoast : public IBeverage { public:string Name() {return DarkRoast;}double Cost() {return 28.5;} };#pragma once #include component.h // 调味品 class CondimentDecorator : public IBeverage { public:CondimentDecorator(IBeverage* beverage) : m_pBeverage(beverage) {}string Name() {return m_pBeverage-Name();}double Cost() {return m_pBeverage-Cost();} protected:IBeverage* m_pBeverage; }; /********** 具体的饮料调味品**********/ // 奶油 class Cream : public CondimentDecorator { public:Cream(IBeverage* beverage) : CondimentDecorator(beverage) {}string Name() {return m_pBeverage-Name() Cream;}double Cost() {return m_pBeverage-Cost() 3.5;} }; // 摩卡 class Mocha : public CondimentDecorator { public:Mocha(IBeverage* beverage) : CondimentDecorator(beverage) {}string Name() {return m_pBeverage-Name() Mocha;}double Cost() {return m_pBeverage-Cost() 2.0;} }; // 糖浆 class Syrup : public CondimentDecorator { public:Syrup(IBeverage* beverage) : CondimentDecorator(beverage) {}string Name() {return m_pBeverage-Name() Syrup;}double Cost() {return m_pBeverage-Cost() 3.0;} };#include component.h #include decorator.h #include iostream #ifndef SAFE_DELETE #define SAFE_DELETE(p) { if(p){delete(p); (p)NULL;} } #endif int main() {/********** 黑咖啡 **********/IBeverage* pHouseBlend new HouseBlend();cout pHouseBlend-Name() : pHouseBlend-Cost() endl;// 黑咖啡 奶牛CondimentDecorator* pCream new Cream(pHouseBlend);cout pCream-Name() : pCream-Cost() endl;// 黑咖啡 摩卡CondimentDecorator* pMocha new Mocha(pHouseBlend);cout pMocha-Name() : pMocha-Cost() endl;// 黑咖啡 糖浆CondimentDecorator* pSyrup new Syrup(pHouseBlend);cout pSyrup-Name() : pSyrup-Cost() endl;/********** 深度烘培咖啡豆 **********/IBeverage* pDarkRoast new DarkRoast();cout pDarkRoast-Name() : pDarkRoast-Cost() endl;// 深度烘培咖啡豆 奶油CondimentDecorator* pCreamDR new Cream(pDarkRoast);cout pCreamDR-Name() : pCreamDR-Cost() endl;// 深度烘培咖啡豆 奶油 摩卡CondimentDecorator* pCreamMocha new Mocha(pCreamDR);cout pCreamMocha-Name() : pCreamMocha-Cost() endl;// 深度烘培咖啡豆 奶油 摩卡 糖浆CondimentDecorator* pCreamMochaSyrup new Syrup(pCreamMocha);cout pCreamMochaSyrup-Name() : pCreamMochaSyrup-Cost() endl;SAFE_DELETE(pSyrup);SAFE_DELETE(pMocha);SAFE_DELETE(pCream);SAFE_DELETE(pHouseBlend);SAFE_DELETE(pCreamMochaSyrup);SAFE_DELETE(pCreamMocha);SAFE_DELETE(pCreamDR);SAFE_DELETE(pDarkRoast);getchar();return 0; }
http://www.hkea.cn/news/14477398/

相关文章:

  • 建外贸网站有效果吗连云港企业网站制作
  • 旅游网站规划设计与建设公司logo设计模板
  • 30天网站建设实录下载青浦做网站
  • 迅速百度网站自然排名建设小辣猫的网站
  • 江苏省建设厅网站查询网站收录很慢
  • 网站宣传怎么做小程序商城图片素材
  • 义乌网站建设技术托管网络推广专员是干什么的
  • 郑州网站APP网站视频弹窗广告代码
  • 空间站对接做网站的叫什么职位
  • 常熟网站建设专业的公司wordpress next posts link
  • 推广 电子商务网站建设济南传承网站建设李聪
  • 网络推广网站怎么做互联网巨头是哪几家
  • 网站开发的功能需求文档模板项目推广平台有哪些
  • 一些大型网站的服务器需要租用多大的带宽网站对网络营销的作用
  • 网站公司建设公司seo成都培训
  • 网站开发vsc网站开发公司傻瓜建网站
  • 网页网站自做全搞定建一个简单的公司官网需要多少钱
  • 网站建设中的策略家装设计网页版
  • 萍乡企业网站建设做网站的注意点
  • 三合一网站建设平台职业生涯规划大赛成长赛道
  • 网站后台邮箱配置徐州网站建设xzwzjs
  • 做网站前台有什么要求wordpress中文文章排版插件
  • 烟台建设企业网站wordpress 用户 函数
  • 成都网站建设方案服务网上学室内设计哪个平台好
  • 网站设计之路哈尔滨seo推广公司
  • 阜阳网站建设电话网站 必须有的功能
  • 网站是否开启gzip工商天眼查官网
  • 建设银行网站 开户行怎么查如何在网站做404页面
  • 网站一个多少钱网站后台帐号
  • 国外做网站卖东西要什么条件为公司制作网站