意图:将一个类的接口转换成客户希望的另一个接口。

适用性:1.你想使用一个已存在的类,而它的接口不符合你的需求。

    2.你想创建一个可以复用的类,该类可以与其它不相关的类或不可预见的类协同工作。

    

类适配器结构:

类适配器效果:1.仅仅引入一个对象,并不需要额外的指针以间接得到adaptee。

       2.当我们想要匹配一个类以及它所有的子类时,类适配器将无法完成。

       3.使得Adapter可以重新定义Adaptee的部分行为。

类适配器代码:


#ifndef _ADAPTER_
#define _ADAPTER_
#include <iostream>
using namespace std;


class Target{
public:
Target(){}
virtual void JulySeven()
{
cout<<"中国人过情人节\n";
}

};
class Adaptee{
public:
Adaptee(){}
virtual void March14th()
{
cout<<"美国人过情人节\n";
}
};


class AdapterClass: public Target, public Adaptee{
public:
AdapterClass(){}


public:
virtual void JulySeven()
{
March14th();
}
};


#endif

 

中国在七月七日过情人节,美国在三月十四过情人节。

现在要实现七月七日美国人过情人节:

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

int main()
{
Target* target = new Target;
cout<<"7月7日";
target->JulySeven();

//类适配器
target = new AdapterClass;
cout<<"7月7日";
target->JulySeven();

//对象适配器
target = new AdapterObject;
cout<<"7月7日";
target->JulySeven();

return 0;
}

对象适配器结构:

对象适配器效果:

1.允许能完成与Adaptee以及它所有子类一起工作。

2.使得重新定义Adaptee的行为比较困难。

用对象适配器方法就将Festival代码改成如下:

class AdapterObject: public Target{
public:
AdapterObject()
{
pFestival = Adaptee();
}

virtual void JulySeven()
{
pFestival.March14th();
}

private:
Adaptee pFestival;
};

适配器模式(adapter)C++实现的更多相关文章

  1. 二十四种设计模式:适配器模式(Adapter Pattern)

    适配器模式(Adapter Pattern) 介绍将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.示例有一个Message实体类 ...

  2. 设计模式 - 适配器模式(adapter pattern) 具体解释

    适配器模式(adapter pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 适配器模式(adapter pattern): 将一个类的接 ...

  3. 设计模式(五)适配器模式Adapter(结构型)

      设计模式(五)适配器模式Adapter(结构型) 1. 概述: 接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题.程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相 ...

  4. 设计模式(三)-- 适配器模式(Adapter)

    适配器模式(Adapter) 考虑一个记录日志的应用,由于用户对日志记录的要求很高,使得开发人员不能简单地采用一些已有的日志工具或日志框架来满足用户的要求,而需要按照用户的要求重新开发新的日志管理系统 ...

  5. 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)

    原文:乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) 作者:webabc ...

  6. 【设计模式】适配器模式 Adapter Pattern

    适配器模式在软件开发界使用及其广泛,在工业界,现实中也是屡见不鲜.比如手机充电器,笔记本充电器,广播接收器,电视接收器等等.都是适配器. 适配器主要作用是让本来不兼容的两个事物兼容和谐的一起工作.比如 ...

  7. 适配器模式-Adapter(Java实现)

    适配器模式-Adapter 是作为两个不兼容的接口之间的桥梁. 本篇文章的代码github地址: https://github.com/GoldArowana/design-patterns/tree ...

  8. 8.3 GOF设计模式二: 适配器模式 Adapter

    GOF设计模式二: 适配器模式 Adapter  为中国市场生产的电器,到了美国,需要有一个转接器才能使用墙上的插座,这个转接 器的功能.原理?复习单实例模式  SingleTon的三个关键点  ...

  9. 怎样让孩子爱上设计模式 —— 7.适配器模式(Adapter Pattern)

    怎样让孩子爱上设计模式 -- 7.适配器模式(Adapter Pattern) 标签: 设计模式初涉 概念相关 定义: 适配器模式把一个类的接口变换成client所期待的还有一种接口,从而 使原本因接 ...

  10. 设计模式 - 适配器模式(adapter pattern) 枚举器和迭代器 具体解释

    适配器模式(adapter pattern) 枚举器和迭代器 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考适配器模式(adapter patter ...

随机推荐

  1. 06--谈谈:C++类的“包含”机制

    谈谈:C++类的“包含”机制   本人在学习Qt的时候发现了一个非常有趣的现象.有很多函数的调用方法都写成了如下的形式: object.func().func2(); 这令小弟着实不懂.在上面这段代码 ...

  2. React-Router ---withRouter

    import React from 'react' import { withRouter } from 'react-router' const Hello = (props) => { re ...

  3. ik分词器各版本下载地址

    ik分词器各个版本下载地址: https://github.com/medcl/elasticsearch-analysis-ik/releases

  4. Oracle关联查询-数据类型不一致问题 ORA-01722: 无效数字

    一.存在表A和表B,都包含字段user_no,但数据类型不一致,如下: create table A ( user_id varchar2(20), user_no number(12,0), xxx ...

  5. SSH框架下单元测试的实现

    SSH框架下单元测试的实现 实现的功能 实现了部门的增删改查 对Action进行了单元测试 对Service 进行了单元测试,通过mock的方式实现. 实现的步骤 一.对Action层的单元测试实现 ...

  6. Redis容量及利用计划

    在利用Redis过程当中,咱们发明了很多Redis分歧于Memcached,也差别于MySQL的特点.(本文首要会商Redis未启用VM撑持环境) 1. Schema MySQL: 需事先设计Memc ...

  7. Spring深入理解(一)

    Spring 框架的设计理念与设计模式分析 Spring核心组件 Spring 框架中的核心组件只有三个:Core.Context 和 Beans Spring 的设计理念 前面介绍了 Spring ...

  8. HDU-4451-Dressing (2012年金华赛区J题)

    Dressing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  9. java SE与java EE , java ME之间的关系

    question: Which one should I install when I want to start learning Java? I'm going to start with som ...

  10. poj 3267 The Cow Lexicon (动态规划)

    The Cow Lexicon Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8167   Accepted: 3845 D ...