Adapter 适配器模式

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

  • 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
  • 需要适配的类(Adaptee):需要适配的类或适配者类。
  • 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。  

有类适配器与对象适配器两种类型。

下列情况使用适配器模式:

  • 要使用的类的接口不符合需求。
  • 建立一个可复用的类,可以与不相关的类或不可预见的类协同工作。
  • 要使用一些已存在的子类,直接适配它的父类接口。

 1 #include <cstdio>
 2
 3 class Adaptee {
 4 public:
 5     void SpecificRequest(int cost) {
 6         printf("such adaptee so %d\n", cost);
 7     }
 8
 9 };
10
11 class Target {
12 public:
13     virtual void Request() = 0;
14 };
15
16 class AdapterCls : public Target, private Adaptee {
17 public:
18     void Request() {
19         SpecificRequest(100);
20     }
21 };
22
23 class AdapterImp : public Target {
24 private:
25     Adaptee adaptee;
26 public:
27     void Request() {
28         adaptee.SpecificRequest(100);
29     }
30 };
31
32 class Client
33 {
34 public:
35     Client();
36     ~Client();
37     void gaoCls() {
38         Target *p = new AdapterCls();
39         p->Request();
40         delete p;
41     }
42     void gaoImp() {
43         Target *p = new AdapterImp();
44         p->Request();
45         delete p;
46     }
47 private:
48 };
49
50 Client::Client()
51 {
52 }
53
54 Client::~Client()
55 {
56 }
时间: 2024-12-07 00:49:18

Adapter 适配器模式的相关文章

设计模式06: Adapter 适配器模式(结构型模式)

Adapter 适配器模式(结构型模式) 适配(转换)的概念无处不在:电源转接头.电源适配器.水管转接头... 动机(Motivation)在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象不能满足的.如何应对这种“迁移的变化”?如何既能够利用现有对象的良好表现,同时又能满足新的应用环境所要求的接口? 意图(Intent)将一个类的接口转换成客户希望的另一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一

Adapter适配器模式

在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的. 将一个类的接口转换成客户希望的另一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 对象适配器 interface IStack    客户期望的端口 { void Push(object item); object Pop(); object Peek(); } class MyStack  implement IStack //

C++设计模式-Adapter适配器模式(转)

Adapter适配器模式作用:将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 分为类适配器模式和对象适配器模式. 系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配.适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况. 想使用一个已经存在的类,但如果它的接口,也就是它的方法和你的要求不相同时,就应该考虑用适配器模式. 比如购买的第三方开

设计模式(七):Adapter 适配器模式 -- 结构型模式

1. 概述: 接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题.程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相关库的发展和进化.  例子1:iphone4,你即可以使用UBS接口连接电脑来充电,假如只有iphone没有电脑,怎么办呢?苹果提供了iphone电源适配器.可以使用这个电源适配器充电.这个iphone的电源适配器就是类似我们说的适配器模式.(电源适配器就是把电源变成需要的电压,也就是适配器的作用是使得一个东西适合另外一个东西.)  例子2:最典型的例

【设计模式01】Adapter适配器模式完全解析

题 目: 适配器模式(Adapter) 名 字: km 时 间: 2015.1.29 (一)那是神马 1,官方定义 将一个类的接口转成客户端需要的另外一个接口. Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 2,我的理解 这个词最早在电工学里,有些国家用110V电压,而我们国家用220V: 你的笔记本不能任何电压都OK,所以出现了适配器,把不同的电压转换成笔记本可用的电压. 3,一些补充: 软件开发中,对系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器

Adapter 适配器模式(设计模式03)

疑问: 在软件系统中,由于应用环境的变化,常常需要将"一些现存的对象"放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的. 如何应对这种"迁移的变化"? 如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口? 定义: 将一个类的接口转换成客户希望的另一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. --<设计模式>GoF 一.对象适配器 对象适配器采用对象组合,通过引用一个类与另一个类接

Java设计模式-Adapter(适配器模式)

适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 适配器模式的结构 适配器模式有类的适配器模式和对象的适配器模式两种不同的形式. 类适配器模式 类的适配器模式把适配的类的API转换成为目标类的API. 在上图中可以看出,Adaptee类并没有sampleOperation2()方法,而客户端则期待这个方法.为使客户端能够使用 Adaptee类,提供一个中间环节,即类Adapter,把Adaptee的API与Target类的AP

[C++设计模式] adapter 适配器模式

STL中,stack对vector或者双端队列进行封装,提供stack操作的接口就是典型的适配器模式. 将一个类的接口转换成客户希望的另外一个接口,就是适配器模式. 使用适配器模式有以下优点: 降低了去实现一个功能点的难度,可以对现有的类进行包装,就可以进行使用了: 提高了项目质量,现有的类一般都是经过测试的,使用了适配器模式之后,不需要对旧的类进行全面的覆盖测试: 总的来说,提高了效率,降低了成本. 根据类的组合和继承,适配器模式分为对象适配器模式和类适配器模式. 既然有了类适配器和对象适配器

设计模式之适配器模式(Adapter)摘录

23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象.创建型模式有两个不断出现的主旋律.第一,它们都将关于该系统使用哪些具体的类的信息封装起来.第二,它们隐藏了这些类的实例是如何被创建和放在一起的.整个系统关于这些对象所知道的是由抽象类所定义的接口.因此,创建型模式在什么被创建,谁创建它,它是怎样被创建的,以