设计模式读书笔记: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...

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

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

设计模式读书笔记-----适配器模式

假如我们又这样软件系统,我们希望它能够和一个新的库搭配使用,但是这个库所提供的接口与我们的软件系统不兼容,我们不想改变现有代码就能解决这个问题,怎么办?这个时候我们就需要将这个新的库接口转换成我们所需...

java读书笔记-《java设计模式》-第3章 - 适配器模式

适配器模式分为 类适配器 和 对象适配器 两种。 两者的区别在于前者是客户端设计的使用接口 与 现有的已实现该功能的功能类组合使用,由于此操作是在类层次上实现的,所以叫类适配器; 而后者客...

设计模式读书笔记-----适配器模式

假如我们又这样软件系统,我们希望它能够和一个新的库搭配使用,但是这个库所提供的接口与我们的软件系统不兼容,我们不想改变现有代码就能解决这个问题,怎么办?这个时候我们就需要将这个新的库接口转换成我们所需...

《Android源码设计模式解析与实战》读书笔记(二十)——适配器模式

适配器,我们在 Android 开发中使用得太多了,什么 ListView 的适配器、 RecycylerView 的适配器、ViewPager 的适配器等等等等,这些适配器的原理就是适配器模式。它是...

3.java设计模式(读书笔记)适配器模式

比如墙壁上是一个3孔的插座,但是现在笔记本电脑需要的是2孔的电源,这个时候就需要一个接收3孔作为输入同时输出2孔的转换器。这就是适配器。 目标接口:在上面的例子就是我们最终需要大的2孔的插座 ...

代理模式、装饰模式、适配器模式、组合模式、桥梁模式、外观模式、享元模式【读书笔记】设计模式4章:结构型模式

结构型模式描述了如何将对象或类结合在一起,形成更加强大的结构。 代理模式 定义 也叫委托模式为其他对象提供一种代理,以控制这个对象的访问角色:抽象角色、真实角色、代理...

适配器模式与外观模式(heade first设计模式 读书笔记)

适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 分析: 这可以让客户从实现的接口解耦。如果一段时间之后,我们想改变接口,适配器可以将改变的部...

C++设计模式读书笔记

  • 2009-11-18 15:45
  • 1.64MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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