开发一套网站多少钱,免费做网站的优缺点,WordPress文章采集软件,建设工程施工合同示范文本20211、适配器模式的提出
在软件功能开发中#xff0c;由于使用环境的改变#xff0c;之前一些类的旧接口放在新环境的功能模块中不再适用。如何使旧接口能适用于新的环境#xff1f;适配器可以解决此类问题。适配器模式#xff1a;通过增加一个适配器类#xff0c;在适配器接…1、适配器模式的提出
在软件功能开发中由于使用环境的改变之前一些类的旧接口放在新环境的功能模块中不再适用。如何使旧接口能适用于新的环境适配器可以解决此类问题。适配器模式通过增加一个适配器类在适配器接口中做一些适配操作将旧模块类转换成使用者Client类期望的接口。
2、需求模式
有一个旧模块类OlderMoudle该类拥有一个OlderRequest接口由于使用者Client环境的改变之前Client不再能够直接使用OlderRequest接口。设计Client能访问OlderRequest接口的功能代码。
3、适配器模式的代码实现
1UML图如下 2代码实现如下
#include iostreamclass Target
{
public:virtual void request()0;virtual ~Target(){};
};class OlderMoudle
{
public:void OlderRequest(){std::cout OlderMoudle OlderRequest std::endl;}
};class Adapter:public Target
{
private:OlderMoudle *m_pModule;
public:Adapter(OlderMoudle* p):m_pModule(p){};virtual void request() override{//... todo adapterstd::cout Adapter request std::endl;m_pModule-OlderRequest();}
};
class Client
{
private:Target* m_pTarget nullptr;
public:Client(OlderMoudle* p){m_pTarget new Adapter(p);};void DoWork(){m_pTarget-request();}~Client(){if(m_pTarget ! nullptr){std::cout Client ~Client std::endl;delete m_pTarget;m_pTarget nullptr;}}
};int main()
{OlderMoudle *pOlderModule new OlderMoudle();Client obj(pOlderModule);obj.DoWork();delete pOlderModule;pOlderModule nullptr;return 0;
}程序运行结果如下