您的位置:首页 > 其它

Adapter

2013-10-28 17:29 330 查看
//Adapter模式又叫适配器模式,顾名思义,这个模式就是把一个不能用的东西“适配”成可以用的东西。

//那么是如何“适配”的呢?比如,东西A想使用东西B,但是A没有能力(没法)使用B,怎么办?A就让东西C帮忙,A通过C就可以用B了。C如何帮忙呢?

//C一边可以通过一个“手柄”让A握住,A一用力,C就在另一边握住B的“手柄”,使用B。这样A就可以间接的使用到B了。

//A通过C使用B

// 1、C继承A和B C(A子类可以调用A一切函数)就能使用B了(类继承)

// 2、C继承A B作为成员数据被引入C (类组合)

//类模式的Adapter实现:

#include <stdio.h>

class Target

{

public:

Target();

virtual ~Target();

virtual void Request()

{

printf("Target::Request");

}

protected:

private:

};

class Adaptee //ee结尾表被动 er表主动 employ: employer,employee雇主,雇员 train: trainer, trainee训练者,受训者 address: addresser (addressor), addressee发件人,收件人

{

public:

Adaptee();

~Adaptee();

void SpecificRequest()

{

printf("Adaptee::SpecificRequest");

}

protected:

private:

};

class Adapter:public Target,private Adaptee

{

public:

Adapter();

~Adapter();

void Request()

{

this->SpecificRequest();

}

protected:

private:

};

void Adapter_test1(int argc,char* argv[])

{

Target* adt = new Adapter(); //Adapter* adt = new Adapter();

adt->Request();

return ;

}

//对象模式的Adapter实现:

class Target

{

public:

Target();

virtual ~Target();

virtual void Request()

{

printf("Target::Request");

}

protected:

private:

};

class Adaptee

{

public:

Adaptee();

~Adaptee();

void SpecificRequest()

{

printf("Adaptee::SpecificRequest");

}

protected:

private:

};

class Adapter:public Target

{

public:

Adapter(Adaptee* ade)

{

this->_ade = ade;

}

~Adapter();

void Request()

{

_ade->SpecificRequest();

}

protected:

private:

Adaptee* _ade;

};

void Adapter_test2(int argc,char* argv[])

{

Adaptee* ade = new Adaptee;

Target* adt = new Adapter(ade);

adt->Request();

return;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: