设计模式Adapter模式的五分钟

五分钟一个设计模式。来形容叙述的设计模式的最简单方法。看到许多其他设计模式,请点击五分钟一个设计模式系列

http://blog.csdn.net/daguanjia11/article/category/3259443

认识适配器模式

适配器模式的定义是:将一个类的接口转换成client希望的另外一个接口。

适配器模式使得原本因为接口不兼容而不能一起工作的那些类能够一起工作。

适配器模式的主要功能是转换接口,目的是复用已有功能。而不是实现新接口,适用于功能实现了但接口不兼容的场合。

适配器组合了原有对象,而且提供与一个client兼容的接口,实际的工作由原有接口完毕。

演示样例代码

以下的演示样例代码中主要包括以下部分:

  1. Target:client须要的接口,与特定领域相关
  2. Adaptee:被适配对象
  3. Adapter:适配器

来上代码:

/// <summary>
/// client须要的接口,与特定领域相关
/// </summary>
public interface Target
{
    /// <summary>
    /// client请求处理的方法
    /// </summary>
    void Request();
}
/// <summary>
/// 被适配对象
/// </summary>
public class Adaptee
{
    /// <summary>
    /// 原有的已经实现了的方法,但接口发生了变化
    /// </summary>
    public void OldRequest()
    {
        Console.WriteLine("原来的方法运行了");
    }
}
/// <summary>
/// 适配器
/// </summary>
public class Adapter : Target
{
    /// <summary>
    /// 组合被适配的对象
    /// </summary>
    private Adaptee adaptee;

    public Adapter(Adaptee adaptee)
    {
        this.adaptee = adaptee;
    }

    public void Request()
    {
        this.adaptee.OldRequest();
    }
}

以下看client怎样使用

class Program
{
    static void Main(string[] args)
    {
        //创建被适配对象
        Adaptee adaptee = new Adaptee();
        //创建client须要调用的接口对象
        Target target = new Adapter(adaptee);
        //请求处理
        target.Request();
    }
}

程序运行结果:

原来的方法运行了

时间: 2024-10-12 16:37:43

设计模式Adapter模式的五分钟的相关文章

设计模式-Adapter模式

目录 相关概念 对象适配器 类适配器 一个例子 总结 适配器模式(Adapter Pattern)是结构型模式.主要用来解决接口不兼容的问题,将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 相关概念 目标类(Target):定义客户所需接口,可以是一个抽象类或接口,也可以是具体类 适配者(Adaptee):需要被适配的角色,它是已经存在的类或对象,适配者类一般是一个具体类,包含了客户希望使用的业务方法,在某些情况下可能没有适配者类的源

五分钟一个设计模式之装饰器模式

五分钟一个设计模式,用最简单的方法来描述设计模式.查看更多设计模式,请点击五分钟一个设计模式系列 http://blog.csdn.net/daguanjia11/article/category/3259443 示例代码 今天实在是想不出什么开场白来引出示例了,也想不出特别有意思的示例了,就用一个很土的例子来描述一下装饰器模式吧. 每个人都要穿衣服,每件衣服都具有某些特定的功能,例如,穿上鞋子的话走路舒服,穿上上衣的话上身不冷,穿上裤子的话腿不冷(你这不废话吗).也就是说,每件衣服都具有特定的

五分钟一个设计模式之代理模式

五分钟一个设计模式,用最简单的方法来描述设计模式. 认识代理模式 代理模式是通过创建一个代理对象,用这个代理对象去代表真实的对象,客户端得到这个代理对象后,就想得到了真实的对象一样.客户端调用代理对象来执行任务,但任务实际上最重还是由真实对象完成的. 代理模式的本质是控制对象的访问. 代理模式包含以下几部分: Subject:目标接口 RealSubject:具体的目标对象,继承自Subject Proxy:代理对象,继承自Subject,使用Proxy可以代替使用RealSubject. 示例

五分钟一个设计模式之创建者模式

五分钟一个设计模式,用最简单的方法来描述设计模式. 认识创建者模式 创建者模式(又叫生成器模式)是为创建一个产品而生的,这个产品的组装算法是确定的,但零部件可以分配给多个厂商生产.使用创建者模式来创建产品,可以把产品零部件的生产和组装分开了. 创建者模式包含以下几个部分: 产品(Product) 厂商的接口(Builder) 具体的厂商(ConcreteBuilder1.ConcreteBuilder2.-ConcreteBuilderN),实现厂商接口,负责产品零部件的生产工作 指导者(Dir

五分钟一个设计模式之命令模式

五分钟一个设计模式,用最简单的方法来描述设计模式. 小米智能模块的例子 前一段小米的老总雷军在印度的全英文演讲想必大家都还历历在目,不过今天我们讨论的主题不是那次演讲,而是小米智能模块.小米4发布时,雷军说,小米已经开发了一个智能模块,只要电器厂商将这个智能模块集成到自家的电器中,就可以用小米手机来控制它,并且小米智能模块才22块钱.是不是一件很牛X的事情?这个事情,从宏观上来看,通过小米手机来控制所有集成了智能模块的电器,就是使用了命令模式!下面我们来模拟一下这个事情. 首先,有一些家用电器的

五分钟一个设计模式之责任链模式

五分钟一个设计模式,用最简单的方法来描述设计模式.查看更多设计模式,请点击五分钟一个设计模式系列 http://blog.csdn.net/daguanjia11/article/category/3259443 请假流程 假设现在一个公司的请假流程如下:一天及以下由小组组长审批,一天以上三天以下由经理审批,三天以上七天以下由老板审批,七天以上直接劝退. 如果每次请假时都很长的if-else-来判断该去找谁请假,很不容易扩展,我们使用责任链模式来实现. 首先,是一个抽象的父类 public ab

五分钟一个设计模式之策略模式

五分钟一个设计模式,用最简单的方法来描述设计模式. 开发一个小游戏 还是先来看个例子吧. 有一天老板一拍脑袋,想做一个游戏,于是把你找来,告诉你他的想法: 做一个最简单的闯关游戏,每个关卡都有一些小怪兽,而游戏的角色通过打死所有小怪兽来通关 角色可以使用武器,先做三四个简单的武器,有一般的武器,有厉害的武器,每个武器的伤害值不一样 游戏过程中,角色可以更换武器 先做一个角色,以后可能增加新角色,但不同角色之间的区别现在还没想好. 你作为这个新游戏的主程序员,要做的就是使程序的架构足够灵活,能够为

五分钟一个设计模式之适配器模式

五分钟一个设计模式,用最简单的方法来描述设计模式.查看更多设计模式,请点击五分钟一个设计模式系列 http://blog.csdn.net/daguanjia11/article/category/3259443 认识适配器模式 适配器模式的定义是:将一个类的接口转换成客户端希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 适配器模式的主要功能是转换接口,目的是复用已有功能,而不是实现新接口,适用于功能实现了但接口不兼容的场合.适配器组合了原有对象,并且提

设计模式指六-Adapter模式

适配器模式,使用之处比较特殊,不属于常规设计模式,主要用于不同系统之间的处理.是将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 系统内部的实体接口 //IUserInfo.h// #pragma once #include <iostream> using std::string; class IUserInfo { public: IUserInfo(void) { } virtual ~IUserInfo(void)