C語言和設計模式(適配器模式)14

來源:互聯網
上載者:User

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】

 

    現在的生活當中,我們離不開各種電子工具。什麼膝上型電腦、手機、mp4啊,都離不開充電。既然是充電,那麼就需要用到充電器。其實從根本上來說,充電器就是一個個普通的適配器。什麼叫適配器呢,就是把220v、50hz的交流電壓編程5~12v的直流電壓。充電器就幹了這麼一件事情。
    那麼,這樣的一個充電適配器,我們應該怎麼用c++描述呢?   

[cpp] view plaincopyprint?
  1. class voltage_12v  
  2. {  
  3. public:  
  4.     voltage_12v() {}  
  5.     virtual ~voltage_12v() {}  
  6.     virtual void request() {}  
  7. };  
  8.   
  9. class v220_to_v12  
  10. {  
  11. public:  
  12.     v220_to_v12() {}  
  13.     ~v220_to_v12() {}  
  14.     void voltage_transform_process() {}  
  15. };  
  16.   
  17. class adapter: public voltage_12v  
  18. {  
  19.     v220_to_v12* pAdaptee;  
  20.   
  21. public:  
  22.     adapter() {}  
  23.     ~adapter() {}  
  24.   
  25.     void request()   
  26.     {  
  27.         pAdaptee->voltage_transform_process();  
  28.     }    
  29. };  

class voltage_12v<br />{<br />public:<br /> voltage_12v() {}<br /> virtual ~voltage_12v() {}<br /> virtual void request() {}<br />};</p><p>class v220_to_v12<br />{<br />public:<br /> v220_to_v12() {}<br /> ~v220_to_v12() {}<br /> void voltage_transform_process() {}<br />};</p><p>class adapter: public voltage_12v<br />{<br /> v220_to_v12* pAdaptee;</p><p>public:<br /> adapter() {}<br /> ~adapter() {}</p><p> void request()<br /> {<br /> pAdaptee->voltage_transform_process();<br /> }<br />};

    通過上面的代碼,我們其實可以這樣理解。類voltage_12v表示我們的最終目的就是為了獲得一個12v的直流電壓。當然獲得12v可以有很多的方法,利用適配器轉換僅僅是其中的一個方法。adapter表示適配器,它自己不能實現220v到12v的轉換工作,所以需要調用類v220_to_v12的轉換函式。所以,我們利用adapter獲得12v的過程,其實就是調用v220_to_v12函數的過程。

    不過,既然我們的主題是用c語言來編寫適配器模式,那麼我們就要實現最初的目標。這其實也不難,關鍵一步就是定義一個Adapter的資料結構。然後把所有的Adapter工作都由Adaptee來做,就是這麼簡單。不知我說明白了沒有?

[cpp] view plaincopyprint?
  1. typdef struct _Adaptee  
  2. {  
  3.     void (*real_process)(struct _Adaptee* pAdaptee);  
  4. }Adaptee;  
  5.   
  6. typedef struct _Adapter  
  7. {  
  8.     void* pAdaptee;  
  9.     void (*transform_process)(struct _Adapter* pAdapter);  
  10.   
  11. }Adapter; 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.