Adapter:适配器模式

Adapter模式用于令接口不兼容的类可以一起工作。Adapter本身用于适配这些不兼容的类。

如,现在有一个需求,需要使用标准类接口。而现有类功能可以实现,但是接口并非标准。于是,可以使用一个Adapter,将现有类的接口转换为标准接口,从而使得原本不兼容的类兼容。

 1.    目标接口类,即客户需要的接口

class Target
{
public:
	virtual void Request(){};//定义标准接口
};

2.    需要适配的现有类

class Adaptee
{
public:
	void SpecificRequest(){};
};
3.    适配器

适配器有两种:类模式适配器;对象模式适配器。

无论哪一种,适配器都会代替目标类,并提供目标类的标准接口。

//类模式适配器类,通过public继承获得接口继承的效果,通过private继承获得实现继承的效果
class AdapterC :public Target,private Adaptee
{
public:
	virtual void Request()
	{
		this->SpecificRequest();
	};//实现Target定义的Request接口
};

//对象模式适配器类,继承Target类,采用组合的方式实现Adaptee的复用
class AdapterO :public Target
{
public:
	AdapterO(Adaptee*adaptee)
	{
		this->_adaptee =_adaptee;
	};
	virtual void Request()
	{
		this->_adaptee->SpecificRequest();
	};//实现Target定义的Request接口
	
private:
	Adaptee* _adaptee;
};

4.    用户使用

用户使用时,使用的是适配器类。因为适配器类在上一步中已经具有了目标类的标准接口,所以适配器已经变成了实际的目标类。

void main()
{
	//类模式Adapter
	Target* pTarget = new AdapterC();
	pTarget->Request();
	
	//对象模式Adapter1
	Adaptee* ade = new Adaptee();
	Target* pTarget1 = new AdapterO(ade);
	pTarget1->Request();
	
	//对象模式Adapter2
	Target* pTarget2 = new AdapterO();
	pTarget2->Request();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值