C++设计模式-适配器模式

37 篇文章 12 订阅

目录

 

 

基本概念

代码与实例


 

基本概念

适配器(Adapter)模式:将一个类的接口转换为客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

 

当系统的数据和行为都正常,但接口不负荷时,可以考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用的环境要求不一致的情况。

 

什么时候使用适配器模式:

          1. 使用一个已经存在的类,但如果它的接口,也就是它的方法和你的要求不同时使用。

          2. 客户代码要求统一调用同一接口。

          3. 双方都不太容易修改的时候再使用适配器模式;

 

本人在此总结下,这个就像套子一样,比如在某个结构里面,有了很多设计模式和功能,但我这个系统,又可以作为另外一个大系统的小功能,而那个大系统又有某种规范,此时给自己的系统带一个套子,使得他能顺利的进入那个大系统,按F进入坦克。哈哈哈!

 

代码与实例

结构如下所示(此图来源于大话设计模式):

程序运行截图如下:

源码如下:

Head.h

#ifndef HEAD_H
#define HEAD_H

//客户期待的接口,目标可以是具体的或者抽象的类,也可以是接口
class Target{

public:
	virtual void request();
	virtual ~Target();
};

//需要适配的类
class Adaptee{

public:
	void specificRequest();
};

//通过内部包装一个Adaptee对象,把源接口转换为目标接口
class Adapter : public Target{

public:
	void request();
	~Adapter();
	Adapter();

private:
	Adaptee *adaptee;
};


#endif HEAD_H

Head.cpp

#include "Head.h"
#include <iostream>
#include <string>
using namespace std;

void Target::request()
{
	cout << "普通请求!" << endl;
} 

Target::~Target()
{
	cout << "Target::~Target() called!" << endl;
}

void Adaptee::specificRequest()
{
	cout << "特殊请求!" << endl;
}

void Adapter::request()
{
	adaptee->specificRequest();
}

Adapter::~Adapter()
{
	cout << "Adapter::~Adapter() called!" << endl;
}

Adapter::Adapter()
{
	//建立一个私有的Adaptee对象
	adaptee = new Adaptee;
}

Main.cpp

#include "Head.h"
#include <iostream>
#include <string>
using namespace std;

int main(int *argc, int *argv[]){

	Target *target = new Adapter;
	target->request();
	delete target;

	getchar();
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值