重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要讲解了“Phone类的怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Phone类的怎么实现”吧!
创新互联建站专注于网站建设|企业网站维护|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖成都柴油发电机等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身开发品质网站。
Decorator Pattern把类中装饰功能从类中搬移去除,这样简化原来类 。建立一个新类来处理这些装饰功能。
装饰模式:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。有时我们希望给某个对象而不是整个类添加一些功能。比如有一个手机,允许你为手机添加特性,比如增加挂件、屏幕贴膜等。一种灵活的设计方式是,将手机嵌入到另一对象中,由这个对象完成特性的添加,我们称这个嵌入的对象为装饰。这个装饰与它所装饰的组件接口一致,因此它对使用该组件的客户透明。下面给出装饰模式的UML图。
在这种设计中,手机的装饰功能被独立出来,可以单独发展,进而简化了具体手机类的设计。下面给出Phone类的实现:
//公共抽象类 class Phone { public: Phone() {} virtual ~Phone() {} virtual void ShowDecorate() {} };
具体的手机类的定义
//具体的手机类 class iPhone : public Phone { private: string m_name; //手机名称 public: iPhone(string name): m_name(name){} ~iPhone() {} void ShowDecorate() { cout<装饰类的实现:
/装饰类 class DecoratorPhone : public Phone { private: Phone *m_phone; //要装饰的手机 public: DecoratorPhone(Phone *phone): m_phone(phone) {} virtual void ShowDecorate() { m_phone->ShowDecorate(); } }; //具体的装饰类 class DecoratorPhoneA : public DecoratorPhone { public: DecoratorPhoneA(Phone *phone) : DecoratorPhone(phone) {} void ShowDecorate() { DecoratorPhone::ShowDecorate(); AddDecorate(); } private: void AddDecorate() { cout<<"增加挂件"<客户使用方式:
int main() { Phone *phone = new NokiaPhone("6300"); Phone *dpa = new DecoratorPhoneA(phone); //装饰,增加挂件 Phone *dpb = new DecoratorPhoneB(phone); //装饰,屏幕贴膜 dpb->ShowDecorate(); delete dpa; delete dpb; delete iphone; return 0; }装饰模式 为已有的功能动态的添加一些更多的功能。 当系统需要新功能时候。在旧版代码中添加不重要的新功能违背了开闭原则。经常用一个新类来处理我们的新功能的添加。 新类包含所要修饰的对象。 有效的把类的核心职责跟装饰功能区分开。
感谢各位的阅读,以上就是“Phone类的怎么实现”的内容了,经过本文的学习后,相信大家对Phone类的怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!
标题名称:Phone类的怎么实现
转载源于:http://cqcxhl.cn/article/psgdei.html