ToB企服应用市场:ToB评测及商务社交产业平台

标题: 计划模式之表面计划模式 [打印本页]

作者: 惊落一身雪    时间: 2024-9-26 09:55
标题: 计划模式之表面计划模式
一、表面计划模式概念

   表面模式 (Facade) 是一种布局型计划模式, 为子系统中的一组接口提供一个同等的界面,此模式界说了一个高层接口,这个接口使得这一子系统更加容易利用。
  
   
  表面计划模式的布局

     代码如下:
       问题:有一套复杂的视频系统,以及以太复杂的音频系统。盼望简化利用流程,提供简化的利用面板。
    解决方案:为子系统中的一组接口提供同等的界面,表面模式界说了一个高层接口,这个接口使得这一子系统更加容易利用。
  1. #include <iostream>
  2. #include <string>
  3. //子系统1
  4. class VedioSystem {
  5. public:
  6.         std::string initial()const
  7.         {
  8.                 return "视频系统:Ready!\n";
  9.         }
  10.         std::string play()const
  11.         {
  12.                 return "视频系统:Go!\n";
  13.         }
  14.         std::string operationX()const
  15.         {
  16.                 return "视频系统:不常用的操作!\n";
  17.         }
  18. };
  19. //子系统2
  20. class RadioSystem {
  21. public:
  22.         std::string init()const
  23.         {
  24.                 return "音频系统:就绪!\n";
  25.         }
  26.         std::string play()const
  27.         {
  28.                 return "音频系统:播放!\n";
  29.         }
  30.         std::string operationX()const
  31.         {
  32.                 return "音频系统:不常用的操作!\n";
  33.         }
  34.         std::string mute()const
  35.         {
  36.         return "音频系统:静音!\n";
  37.         }
  38. };
  39. //外观类
  40. class Controller {
  41. protected:
  42.         VedioSystem* m_vedio;
  43.     RadioSystem* m_radio;
  44. public:
  45.         Controller(VedioSystem* vedio = nullptr, RadioSystem* radio = nullptr)
  46.         {
  47.                 if (!vedio)
  48.                 {
  49.                         m_vedio = vedio;
  50.                 }
  51.                 else
  52.                 {
  53.                         new VedioSystem();
  54.                         m_radio = radio ? radio : new RadioSystem();
  55.                 }
  56.         }
  57.         ~Controller()
  58.         {
  59.         delete m_vedio;
  60.         }
  61.         std::string start()const
  62.         {
  63.                 std::string string = "控制器启动视频系统\n";
  64.         string += m_vedio->initial();
  65.         string += m_radio->init();
  66.                 string += "控制器启动播放\n";
  67.                 string += m_vedio->play();
  68.                 string += m_radio->play();
  69.         return string;
  70.         }
  71.         std::string mute()const
  72.         {
  73.                 return "控制器静音\n" + m_radio->mute();
  74.         }
  75. };
  76. int main()
  77. {
  78.         VedioSystem* vedio = new VedioSystem();
  79.     RadioSystem* radio = new RadioSystem();
  80.     Controller controller(vedio, radio);
  81.         std::cout << controller.start() << std::endl;
  82.     return 0;
  83. }
复制代码
 二、与其他模式的关系

   

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4