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;
}
//那么是如何“适配”的呢?比如,东西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;
}
相关文章推荐
- 现代程序设计 作业7 - 更加简单的题目
- load_class函数(system/core/commo…
- is_loaded函数(system/core/common…
- $_FILES的用法
- php代码实现文件下载
- 几番意
- PHP几个防SQL注入攻击自带函数区别
- php防御跨站脚本攻击
- htmlspecialchars用法
- seo优化
- 当你学不进去的时候,试试“普瑞马…
- 谁是史上巾帼英雄第一人?
- 我到底喜欢什么?
- 字节未对齐引起的段错误
- 利用指针实现变量交换
- Android 图表绘制
- Decorator
- Bridge
- PHP单元测试工具PHPUnit初体验
- 4.Linux下nohup命令实现退出终端后程序继续后台运行