手机类的怎么实现

  介绍

这篇文章主要讲解了“手机类的怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习”手机类的怎么实现”吧!

,,,,Decorator 把模式类中装饰功能从类中搬移去除,这样简化原来类。建立一个新类来处理这些装饰功能。

,,,,装饰模式:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。有时我们希望给某个对象而不是整个类添加一些功能,比如有一个手机,允许你为手机添加特性,比如增加挂件,屏幕贴膜等。一种灵活的设计方式是,将手机嵌入到另一对象中,由这个对象完成特性的添加,我们称这个嵌入的对象为装饰。这个装饰与它所装饰的组件接口一致,因此它对使用该组件的客户透明。下面给出装饰模式的UML图。

手机类的怎么实现

,,,,,,,,在这种设计中,手机的装饰功能被独立出来,可以单独发展,进而简化了具体手机类的设计。下面给出手机类的实现:

//公共抽象类,,
  class  Phone ,
  {,,
  公众:,,
  ,,,电话(),{},,
  ,,,virtual  ~电话(),{},,
  ,,,virtual  void  ShowDecorate (), {},,
  };

具体的手机类的定义

//具体的手机类,,
  class  iPhone : public  Phone ,
  {,,
  私人:,,
  ,,,string  m_name;,//手机名称,,
  公众:,,
  ,,,iPhone (string 名字):,m_name(名字){},,
  ,,,~ iPhone (), {},,
  ,,,void  ShowDecorate (), {, cout<& lt; m_name<& lt;“的装饰“& lt; & lt; endl;},,
  },,,//具体的手机类,,
  class  NokiaPhone : public  Phone ,
  {,,
  私人:,,
  ,,,string  m_name;,,
  公众:,,
  ,,,NokiaPhone (string 名字):,m_name(名字){},,
  ,,,~ NokiaPhone (), {},,
  ,,,void  ShowDecorate (), {, cout<& lt; m_name<& lt;“的装饰“& lt; & lt; endl;},,
  };

,,,,装饰类的实现:

/装饰类,,
  class  DecoratorPhone : public  Phone ,
  {,,
  私人:,,
  ,,,Phone  * m_phone;,,//要装饰的手机,,
  公众:,,
  ,,,DecoratorPhone (Phone  *电话):,m_phone(电话),{},,
  ,,,virtual  void  ShowDecorate (), {, m_phone→ShowDecorate ();,},,
  },,,//具体的装饰类,,
  class  DecoratorPhoneA : public  DecoratorPhone ,
  {,,
  公众:,,
  ,,,DecoratorPhoneA (Phone  *电话),:,DecoratorPhone(电话),{},,
  ,,,void  ShowDecorate (), {, DecoratorPhone: ShowDecorate ();, AddDecorate ();,},,
  私人:,,
  ,,,void  AddDecorate (), {, cout<& lt;“增加挂件“& lt; & lt; endl;,},//增加的装饰,,
  },,,//具体的装饰类,,
  class  DecoratorPhoneB : public  DecoratorPhone ,
  {,,
  公众:,,
  ,,,DecoratorPhoneB (Phone  *电话),:,DecoratorPhone(电话),{},,
  ,,,void  ShowDecorate (), {, DecoratorPhone: ShowDecorate ();, AddDecorate ();,},,
  私人:,,
  ,,,void  AddDecorate (), {, cout<& lt;“屏幕贴膜“& lt; & lt; endl;,},//增加的装饰,,
  };

客户使用方式:

 int 主要(),,
  {,,
  ,,,Phone  * Phone =, new  NokiaPhone (“6300”),,,
  ,,,Phone  * dpa =, new  DecoratorPhoneA(电话),,//装饰,增加挂件,,
  ,,,Phone  * dpb =, new  DecoratorPhoneB(电话),,//装饰,屏幕贴膜,,
  ,,,dpb→ShowDecorate ();,,
  ,,,delete  dpa;,,
  ,,,delete  dpb;,,
  ,,,delete  iphone;,,
  ,,,return  0;,,
  }

,,,装饰模式为已有的功能动态的添加一些更多的功能,当系统需要新功能时候。在旧版代码中添加不重要的新功能违背了开闭原则。经常用一个新类来处理我们的新功能的添加。新类包含所要修饰的对象,有效的把类的核心职责跟装饰功能区分开。

感谢各位的阅读,以上就是“手机类的怎么实现”的内容了,经过本文的学习后,相信大家对手机类的怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

手机类的怎么实现