Adapter

//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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值