设计模式之适配器模式(对象模式)
对象模式
#pragma once class Target { public: Target(); virtual ~Target(); virtual void Request(); };
#include "Target.h" #include <iostream> Target::Target() { } Target::~Target() { } void Target::Request() { std::cout << "Target::Request" << std::endl; }
#pragma once class Adaptee { public: Adaptee(); ~Adaptee(); void SpecificRequest(); };
#include "Adaptee.h" #include <iostream> Adaptee::Adaptee() { } Adaptee::~Adaptee() { } void Adaptee::SpecificRequest() { std::cout << "Adaptee::SpecificRequest" << std::endl; }
#include "Target.h" #include "Adaptee.h" class Adapter : public Target { public: Adapter(Adaptee *ade); ~Adapter(); void Request(); protected: Adaptee *m_ade; };
#include "Adapter.h" Adapter::Adapter(Adaptee *ade) { this->m_ade = ade; } Adapter::~Adapter() { } void Adapter::Request() { m_ade->SpecificRequest(); }
测试
#include <iostream> #include "Adapter.h" int main() { Adaptee *ade = new Adaptee(); Target *adt = new Adapter(ade); adt->Request();
//内存释放
if (ade) { delete ade; ade = NULL; } if (adt) { delete adt; adt = NULL; }
std::cout << "Hello World!\n"; }

浙公网安备 33010602011771号