设计模式读书笔记:Adapter Class/Object(适配器)

原创 2015年07月07日 17:35:32

意图:

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

结构图:来自 《23种设计模式 - 郗晓勇》


实现:https://github.com/panshiqu/patterns/tree/master/Adapter

Adaptee

#include <iostream>

namespace NS_ADAPTER {

class Adaptee {
public:
	Adaptee() {}
	virtual ~Adaptee() {}
	void SpecificRequest(void)
	{
		std::cout << "SpecificRequest." << std::endl;
	}
};

} /* namespace NS_ADAPTER */
AdapterA

// 类适配器

#include "Target.h"
#include "Adaptee.h"

namespace NS_ADAPTER {

class AdapterA : public Target, private Adaptee
{
public:
	AdapterA() {}
	virtual ~AdapterA() {}
	virtual void Request(void)
	{
		SpecificRequest();
	}
};

} /* namespace NS_ADAPTER */
AdapterB

// 对象适配器

#include "Target.h"
#include "Adaptee.h"

namespace NS_ADAPTER {

class AdapterB : public Target
{
public:
	AdapterB(Adaptee *adaptee) : _adaptee(adaptee) {}
	virtual ~AdapterB() {}
	virtual void Request(void)
	{
		_adaptee->SpecificRequest();
	}

private:
	Adaptee *_adaptee;
};

} /* namespace NS_ADAPTER */
Target

#include <iostream>

namespace NS_ADAPTER {

class Target {
public:
	Target() {}
	virtual ~Target() {}
	virtual void Request(void)
	{
		std::cout << "Request." << std::endl;
	}
};

} /* namespace NS_ADAPTER */
main

#include "Adapter/AdapterA.h"
#include "Adapter/AdapterB.h"
using namespace NS_ADAPTER;
int main(void)
{
	// 类适配器
	AdapterA aa;
	aa.Request();

	// 对象适配器
	Adaptee ada;
	AdapterB ab(&ada);
	ab.Request();
}
附加:

版权声明:本文为博主原创文章,未经博主允许不得转载。

c++设计模式(五)Adapter class/object 适配器

在c++中什么是适配器呢?           先来看个例子:对于笔记本电脑,每台都有一个适配器,这个适配器干什么呢?就是给笔记本提供合适的电压,因为不同的国家民用电压标准不同,美国是110,中国是2...
  • chenxun2009
  • chenxun2009
  • 2015年09月12日 01:45
  • 1054

Java设计模式之适配器模式(Adapter Pattern)

Adapter Pattern的作用是在不改变功能的前提下转换接口。Adapter分为两类,一类是Object Adapter, 另一类是Class Adapter。由于Class Adapter的实...
  • tracker_w
  • tracker_w
  • 2014年06月17日 03:39
  • 2401

最常用的设计模式---适配器模式(C++实现)

sdfsfd
  • lh844386434
  • lh844386434
  • 2014年01月06日 22:24
  • 2024

Java设计模式之适配器模式(Adapter)在Android中的应用

1.概念:将内容与控件相分离的一种设计(公式) ,达到内容灵活显示的目的。2.适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。单独讲解接口的适配器模式a. 接口的适配器模式...
  • huang_xiao_yu
  • huang_xiao_yu
  • 2015年11月01日 00:33
  • 1098

一个示例让你明白适配器模式

本文讨论适配器模式。适配器模式是23中设计模式之一,它的主要作用是在新接口和老接口之间进行适配。它非常像我们出国旅行时带的电源转换器。为了举这个例子,我还特意去京东上搜了一下电源转换器,确实看到了很多...
  • brave2211
  • brave2211
  • 2014年01月26日 00:08
  • 42209

Java设计模式透析之 —— 适配器(Adapter)

今天一大早,你的leader就匆匆忙忙跑过来找到你:“快,快,紧急任务!最近ChinaJoy马上就要开始了,老板要求提供一种直观的方式,可以查看到我们新上线的游戏中每个服的在线人数。” 你看了看日期,...
  • sinyu890807
  • sinyu890807
  • 2013年07月25日 09:01
  • 39840

设计模式之适配器模式(Adapter Class/Object)

1.解析定义 : 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作;宗旨 : 保留现有类所提供的服务,向客户提供接口,以满足客...
  • LABLENET
  • LABLENET
  • 2015年11月26日 10:06
  • 386

设计模式(结构型)之适配器模式(Adapter Pattern)

将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作...
  • yanbober
  • yanbober
  • 2015年04月29日 10:05
  • 3067

设计模式学习: Adapter(适配器, Wrapper)模式

一, 意图:     将一个类的接口转化成客户希望的另一个接口。 Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 二, 别名:     Wrapper ...
  • poppick
  • poppick
  • 2016年04月01日 18:13
  • 872

Ruby设计模式透析之 —— 适配器(Adapter)

此为Java设计模式透析的拷贝版,专门为Ruby爱好者提供的,不熟悉Ruby语法的朋友请转阅 : Java设计模式透析之 —— 适配器(Adapter) 今天一大早,你的leader就匆匆忙忙跑过来...
  • sinyu890807
  • sinyu890807
  • 2013年07月25日 21:42
  • 9803
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式读书笔记:Adapter Class/Object(适配器)
举报原因:
原因补充:

(最多只允许输入30个字)