图解设计模式Adapter模式

作者: MWY | 来源:发表于2017-01-11 15:58 被阅读364次

Adapter(适配器模式)

适配器模式用于填补现有程序和所需程序之间的差异

Adapter模式有以下两种

  • 类适配器模式(使用继承的适配器)
  • 对象适配器模式(使用委托的适配器)
类适配器模式(使用继承的适配器)
Paste_Image.png
Banner
//实际情况
public class Banner {

    private String string;
    public Banner(String string) {
        this.string = string;
    }

    public void showWithParen() {
        System.out.println("(" + string + ")");
    }

    public void showWithAster() {
        System.out.println("*" + string + "*");
    }


}
PrintBanner(适配器)
public class PrintBanner extends Banner implements Print {

    public PrintBanner(String string) {
        super(string);

    }

    @Override
    public void printWeak() {
        showWithParen();
    }

    @Override
    public void printStrong() {
        showWithAster();
    }
}
Print(需求)
public interface Print {
    public abstract void printWeak();
    public abstract void printStrong();
}
对象适配器(使用委托的适配器)
Paste_Image.png

Banner

public class Banner {

    private String string;
    public Banner(String string) {
        this.string = string;
    }

    public void showWithParen() {
        System.out.println("(" + string + ")");
    }

    public void showWithAster() {
        System.out.println("*" + string + "*");
    }
}

PrintBanner(适配器)

//满足Target的需求
public class PrintBanner extends Print {

    private Banner banner;

    public PrintBanner(String string) {
        //super(string);
        this.banner = new Banner(string);

    }

    @Override
    public void printWeak() {
        banner.showWithParen();
    }

    @Override
    public void printStrong() {
        banner.showWithAster();
    }
}

Print(需求,Target(对象))

//负责定义所需的方法
public abstract class Print {
    public abstract void printWeak();
    public abstract void printStrong();
}

Main

//Main中不需要知道任何关于Banner的信息
public static void main(String[] args) {
    // write your code here
        Print p = new PrintBanner("Hello");
        p.printWeak();
        p.printStrong();
    }
}

什么时候使用Adapter模式

很多时候,我们并非从零开始编程,经常会用到现有的类,特别是当现有的类已经被充分测试过,我们更愿意将这些类作为组件复用,Adapter模式会对现有的类进行适配,生成新的类
使用Adapter可以在完全不改变现有代码的前提下使现有代码适配于新的接口

相关文章

  • 图解设计模式Adapter模式

    Adapter(适配器模式) 适配器模式用于填补现有程序和所需程序之间的差异 Adapter模式有以下两种 类适配...

  • 图解设计模式之Adapter模式

    Adapter模式 上图为笔记本电脑的电源适配器,笔记本需要12~20v直流电压供电,但是插座出来的电压为220v...

  • 11.3设计模式-适配器-详解

    设计模式-适配器adapter模式 adapter模式详解 adapter模式在android中的实际运用1.li...

  • 浅谈设计模式之适配器模式

    适配器模式(Adapter Pattern) 概述: 在设计模式中,适配器模式(adapter pattern)有...

  • Adapter模式(设计模式)

    对象适配器模式(使用委托的适配器) 个人理解 用一个比喻来描述比较好,比如:中国现在用电的标准电压是220V交流电...

  • 简说设计模式之适配器模式

    前言:对于设计模式基础概念可以去看[简说设计模式之设计模式概述] 一、什么是适配器模式 适配器模式(Adapter...

  • 设计模式-adapter设计模式

    效果图 1.定义 将一种对象适配成另一种对象 2.示例 3.使用 listview的适配器 4.总结 1.适配器模...

  • 浅谈GoF23设计模式-“Adapter”模式

    “Adapter”模式为结构型设计模式,C#当中主要使用对象适配器。“Adapter”模式定义:将一个类的接口转换...

  • 设计模式-Adapter

    一,Adapter模式详解 适配器模式定义将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类一起...

  • Adapter 设计模式

    adapter 模式详解 类的适配器模式 把适配的类的 API转换为目标类的API。 对象适配器对象的适配器模式 ...

网友评论

    本文标题:图解设计模式Adapter模式

    本文链接:https://www.haomeiwen.com/subject/nyjrbttx.html