C语言和设计模式(适配器模式)14

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

 

    现在的生活当中,我们离不开各种电子工具。什么笔记本电脑、手机、mp4啊,都离不开充电。既然是充电,那么就需要用到充电器。其实从根本上来说,充电器就是一个个普通的适配器。什么叫适配器呢,就是把220v、50hz的交流电压编程5~12v的直流电压。充电器就干了这么一件事情。
    那么,这样的一个充电适配器,我们应该怎么用c++描述呢?   

  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. };  

    通过上面的代码,我们其实可以这样理解。类voltage_12v表示我们的最终目的就是为了获得一个12v的直流电压。当然获得12v可以有很多的方法,利用适配器转换仅仅是其中的一个方法。adapter表示适配器,它自己不能实现220v到12v的转换工作,所以需要调用类v220_to_v12的转换函数。所以,我们利用adapter获得12v的过程,其实就是调用v220_to_v12函数的过程。

    不过,既然我们的主题是用c语言来编写适配器模式,那么我们就要实现最初的目标。这其实也不难,关键一步就是定义一个Adapter的数据结构。然后把所有的Adapter工作都由Adaptee来做,就是这么简单。不知我说明白了没有?

  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; 
posted @ 2012-01-21 22:05  董雨  阅读(487)  评论(0编辑  收藏  举报