设计模式_适配器

//类适配器
#include<memory>
#include<iostream>
using namespace std;
class Target {
  public:
    virtual void request(){
        cout << "Target::Request"<<endl;
    }
};
class Adaptee{
public:
   void SpecificRequest(){
        cout << "adaptee::SpecificRequest()"<<endl;
    }
};
class Adapter : public Target , Adaptee{
public:
    void request(){
        Adaptee::SpecificRequest ();
    }
};
int main(int argc, char *argv[])
{
    auto_ptr<Target> tarobj ( new Adapter() );//适配器就是引入中间类进行后台链接
    //Target *tarobj = new Adapter();
    tarobj->request ();
    return 0;
}
//对象适配器(比类适配器常用)
#include<iostream>
#include<memory>
using namespace std;
class Target
{
public:
    Target() {}
    virtual ~Target(){
        cout <<"delete target"<<endl;
    }
    virtual void Request(){
        cout << "Target request" << endl;
    }
};
class Adaptee
{
public:
    Adaptee() {}
    void SpecialRequest(){
        cout << "Adaptee::request" <<endl;
    }
};
class Adapter : public Target
{
public:
    Adapter()  : m_Adaptee(new Adaptee()){}
    ~Adapter(){
        if( m_Adaptee != NULL){
            delete m_Adaptee;
            cout << "delete Adaptee"<<endl;
            m_Adaptee = NULL;
        }
    }
    void Request (){
        m_Adaptee->SpecialRequest ();
    }
private:
    Adaptee *m_Adaptee;

};
int main(int argc, char *argv[])
{
    auto_ptr<Target> tarobj (new Adapter());
    tarobj->Request ();
    return 0;
}

时间: 2024-08-24 13:52:46

设计模式_适配器的相关文章

设计模式--重温--适配器

实际场景: Eric有一台旧电脑,旧电脑的容量是40g.最近Eric迷恋上的电影(电影类型是:此处省略100字),这是他想把电影保存到硬盘,而容量又特别小,需要在多加一块1T的硬盘,之前老硬盘的接口是IDE的, 而现在的硬盘基本上都是SATA接口的硬盘,所以装机人员就使用了一条"转接线",这条线的作用就是将SATA接口的硬盘可以插在IDE接口上. 这里就出现了一个适配器的原型: IDE接口  就是  目标接口    转接线  就是 适配器   SATA接口  就是 要适配的接口 UML

Java设计模式之适配器

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9400141 今天一大早,你的leader就匆匆忙忙跑过来找到你:“快,快,紧急任务!最近ChinaJoy马上就要开始了,老板要求提供一种直观的方式,可以查看到我们新上线的游戏中每个服的在线人数.” 你看了看日期,不是吧!这哪里是马上要开始了,分明是已经开始了!这怎么可能来得及呢? “没关系的.”你的leader安慰你道:“功能其实很简单的,接口都已经提供好了,你只需要调用一下就行

Java读源码学设计模式:适配器Adapter

适配器模式相关源码:slf4j-1.6.1.hibernate-3.6.7 大家都知道,log4j是一个广泛使用的日志工具,除此之外,sun公司在JDK中也有自己的日志工具,也就是java.util.logging.Logger.当然还有其他一些日志工具. 多种日志工具功能和使用方式类似,一般都包含debug.info.warn.error等日志级别的方法,但却没有实现共同的接口.这一点不像JDBC,虽然关系型数据库种类很多,例如MySQL.Oracle等,但是有一套统一的接口,也就是JDBC.

设计模式 8 —— 适配器和外观模式

设计模式目录: 设计模式 1 ——观察者模式 设计模式 2 —— 装饰者模式 设计模式 3 —— 迭代器和组合模式(迭代器) 设计模式 4 —— 迭代器和组合模式(组合) 设计模式 5 —— 工厂模式 设计模式 6 —— 单件模式 设计模式 7 —— 命令模式 设计模式 8 —— 适配器和外观模式 概述 第1部分 问题引入 第2部分 适配器模式定义 第3部分 对象和类的适配者 第4 部分 适配器模式与装饰者模式区别 第5 部分 外观模式 第1 部分 问题引入 OO适配器是什么,现实中到处都是.比

理解设计模式(适配器)

适配器模式,转换不同接口,实现兼容. 特定环境 接口兼容—使用现有类,但使用方式与原有方式不同,需要转换—现有接口兼容第三方组件—保留并使用原系统类的功能,但客户端访问方式发生变化,同时无法修改原有代码时 相近功能类间的转换 一类问题 接口不兼容的类,不能协同合作 解决方案 3个角色: 目标接口 Target : 提供期待的使用方式,由类或接口实现 被适配者 Adaptee : 类原有使用方式,由类或接口实现 适配器 Adapter : 封装Adaptee引用,实现或继承Target,重写Tar

设计模式 之 适配器

适配器模式(Adapter) 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 在我们生活中存在很多适配器的例子,如插座转换器.笔记本电脑电源适配器等.今天,我们就来看一下嘴熟悉的笔记本电源适配器的例子.通常,笔记本电脑需要的电流都是12-20V以内的直流电流,而我们家庭用电通常是220V的交流电,当然还有工业用电380V交流电,还有更低的110V交流电源.如何把这些不同的交流电源转换成笔记本电脑需要的直流电呢?这就需要电源

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

23种子GOF设计模式一般分为三类:创建模式.结构模型.行为模式. 创建模式抽象的实例,他们帮助建立一个系统,是独立于如何.这是一个这些对象和陈述的组合.创建使用继承一个类架构更改实例,一个对象类型模型的建立也将委托实例化一个对象. 断出现的主旋律.第一,它们都将关于该系统使用哪些详细的类的信息封装起来. 第二.它们隐藏了这些类的实例是怎样被创建和放在一起的.整个系统关于这些对象所知道的是由抽象类所定义的接口. 因此,创建型模式在什么被创建,谁创建它,它是怎样被创建的,以及何时创建这些方面给予了

PHP设计模式系列 - 适配器

什么是适配器: 适配器设计模式只是将某个对象的接口适配为另一个对象所期望的接口. 设计情景: 假如我们原始的有一个UserInfo的类,提供用户信息的类,早起设计该类的时候,只实现了一个getUserName获取用户名的方法. 我们的MyOldObject类中,将从UserInfo这个类中获取用户信息,并且输出用户名 随着时间的推移,我们旧的UserInfo这个类只提供的获取用户名的方法,已经没法满足需求,我们同时需要获取用户的年龄等信息. 为了不改变原本UserInfo这个类,我们就继承Use

设计模式之适配器

今天一大早,你的leader就匆匆忙忙跑过来找到你:“快,快,紧急任务!最近ChinaJoy马上就要开始了,老板要求提供一种直观的方式,可以查看到我们新上线的游戏中每个服的在线人数.” 你看了看日期,不是吧!这哪里是马上要开始了,分明是已经开始了!这怎么可能来得及呢? “没关系的.”你的leader安慰你道:“功能其实很简单的,接口都已经提供好了,你只需要调用一下就行了.” 好吧,你勉为其难地接受了,对于这种突如其来的新需求,你早已习惯. 你的leader向你具体描述了一下需求,你们的游戏目前有