#include <iostream>
using namespace  std;

/*
  适配器模式:在复用已有代码出现接口不匹配的时候使用
  适配器实际上是一个继承自目标接口的类,包含有一个以
  往的接口,通过在重载方法中调用原来接口,来实现适配
*/


//目标接口,适配器类继承此接口
class Target {
public:
    virtual void Request() {
        cout<<"普通请求"<<endl;
    }
};

//原有接口,需要包装在适配器类的接口中
class Adaptee {
public:
    void SpecificRequest() {
        cout<<"特殊请求"<<endl;
    }
};

//适配器类
class Adapter : public Target {
private:
    Adaptee* pAdaptee; //原有接口对象

public:
    Adapter() { pAdaptee = new Adaptee(); }
    ~Adapter() { delete pAdaptee; }

    //包装原有接口
    void Request() {
        pAdaptee->SpecificRequest();
    }
};

int main()
{
    Target *pTarget = new Adapter();
    pTarget->Request();
    delete pTarget;
    return 0;
}
 posted on 2012-08-20 16:32  晴朗蝈蝈  阅读(120)  评论(0)    收藏  举报