[设计模式]Adapter适配器模式
Adapter适配器模式
将一个类的接口转换成客户希望的另外一个接口。A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
双方都不适合修改的时候,可以考虑使用适配器模式。
Adapt模式其实就是把完成同样的一个功能但是接口不兼容的类桥接在一起使之可以在一起工作,这个没搜使得复用旧的接口成为可能。
小demoadapter.h
#ifndef ADAPTER_H#define ADAPTER_H// 需要被Adapt的类class Target{public:Target(){}virtual ~Target() {}virtual void Request() = 0;};// 与被Adapt对象提供不兼容接口的类class Adaptee{public:Adaptee(){}~Adaptee(){}void SpecialRequest();};// 进行Adapt的类,采用聚合原有接口类的方式class Adapter : public Target{public:Adapter(Adaptee* pAdaptee);virtual ~Adapter();virtual void Request();private:Adaptee* m_pAdptee;};#endif
adapter.cpp
#include "Adapter.h"#include <iostream>void Adaptee::SpecialRequest(){std::cout << "SpecialRequest of Adaptee\n";}Adapter::Adapter(Adaptee* pAdaptee) : m_pAdptee(pAdaptee){}Adapter::~Adapter(){delete m_pAdptee;m_pAdptee = NULL;}void Adapter::Request(){std::cout << "Request of Adapter\n";m_pAdptee->SpecialRequest();}
main.cpp
#include "Adapter.h"#include <stdlib.h>int main(){Adaptee *pAdaptee = new Adaptee;Target *pTarget = new Adapter(pAdaptee);pTarget->Request();delete pTarget;system("pause");return 0;}