设计模式——适配器模式

适配器模式也叫做包装模式;就是把内部结构包装(适配)成用户期待的格式,使得可以兼容使用

通过继承方式使用适配器模式

/**
 * @author maikec
 * @date 2019/5/9 */public interface Print {/** * 打印带括号的消息     */void printParen();/** * 打印带*号的消息     */void printAster();
}/**
 * 实际使用中的类
 * @author maikec
 * @date 2019/5/9 */public class Banner {private final String msg;public Banner(String msg){this.msg = msg;
    }public void showWithParen(){
        System.out.println( "(" + msg + ")" );
    }public void showWithAster(){
        System.out.println( "*" + msg + "*" );
    }
}/**
 * @author maikec
 * @date 2019/5/9 */public class PrintBannerAdapter extends Banner implements Print {public PrintBannerAdapter(String msg) {super( msg );
    }

    @Overridepublic void printParen() {
        showWithParen();
    }

    @Overridepublic void printAster() {
        showWithAster();
    }
}/**
 * @author maikec
 * @date 2019/5/9 */public class AdapterExtendDemo {public static void main(String[] args) {
        Print print = new PrintBannerAdapter( "hello adapter" );
        print.printAster(  );
        print.printParen();
    }
}

通过引用使用适配器模式

/**
 * 需求
 * @author maikec
 * @date 2019/5/9 */public abstract class Print {/** * 打印带括号的消息     */public abstract void printParen();/** * 打印带*号的消息     */public abstract void printAster();public void i(){

    }
}/**
 * 实际使用中的类
 * @author maikec
 * @date 2019/5/9 */public class Banner {private final String msg;public Banner(String msg){this.msg = msg;
    }public void showWithParen(){
        System.out.println( "(" + msg + ")" );
    }public void showWithAster(){
        System.out.println( "*" + msg + "*" );
    }
}/**
 * @author maikec
 * @date 2019/5/9 */public class PrintBannerAdapter extends Print {private Banner banner;public PrintBannerAdapter(Banner banner){this.banner = banner;
    }
    @Overridepublic void printParen() {
        banner.showWithParen();
    }

    @Overridepublic void printAster() {
        banner.showWithAster();
    }
}/**
 * @author maikec
 * @date 2019/5/9 */public class AdapterReferenceDemo {public static void main(String[] args) {
        Print print = new PrintBannerAdapter( new Banner( "Hello Adapter" ) );
        print.printAster();
        print.printParen();
    }
}

附录

zh.wikipedia.org/wiki/适配器模式 维基关于适配器模式
github.com/maikec/patt… 个人GitHub设计模式案例

声明

引用该文档请注明出处

(0)

相关推荐

  • 通俗易懂系列 | 设计模式(七):观察者模式

    介绍# 观察者模式是行为设计模式之一.当您对对象的状态感兴趣并希望在有任何更改时收到通知时,观察者设计模式非常有用.在观察者模式中,监视另一个对象状态的对象称为Observer,正在被监视的对象称为S ...

  • PHP设计模式—适配器模式

    定义: 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口.Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 结构: Target:目标接口,定义与 ...

  • 设计模式-适配器模式

    生活中的例子 如上图所示,生活中适配器无处不在,如电源适配器,读卡器,甚至多转接头读卡器等,都是很常见的例子,它们的目的都是将原本不能一起工作的部件能够在一起工作. 在软件工程领域的适配器也是同样类似 ...

  • 结构型设计模式 -- 适配器模式

    一.小案例分析 1.功能需求: 以电源适配器为例. 一个人去外国旅游,住在外国某宾馆,恰好手机没电(手机是双孔插头),但外国宾馆只有三孔插座,宾馆一般不可能为了旅客,将三孔插座换成双孔插座,此时适配器 ...

  • 设计模式 | 适配器模式(adapter)

    定义: 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.   书中说到Gof的设计模式中,讲了两种类型的适配器模式: 1.类适配 ...

  • 设计模式(七)——适配器模式(SpringMVC框架分析)

    适配器模式1 现实生活中的适配器例子泰国插座用的是两孔的(欧标),可以买个多功能转换插头 (适配器) ,这样就可以使用了. 2 基本介绍1) 适配器模式(Adapter Pattern)将某个类的接口 ...

  • PHP设计模式之适配器模式

    PHP设计模式之适配器模式 这个模式一直以来都有一个很经典的例子,那就是插座!没错,当我们从国外买回来电器,或者旅游出差去国外的时候,经常会需要一个电源适配器,因为我国的电压标准是220伏,而其他国家 ...

  • [PHP小课堂]PHP设计模式之适配器模式

    [PHP小课堂]PHP设计模式之适配器模式 关注公众号:[硬核项目经理]获取最新文章 添加微信/QQ好友:[DarkMatterZyCoder/149844827]免费得PHP.项目管理学习资料

  • 设计模式之适配器模式案例详解

    基本介绍 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作. 适配器模式属于结构性模式,主要分为三类:类适配器模式.对象适 ...

  • 每天学习一个设计模式(一):结构型之适配器模式

    一.基本概念 适配器模式是将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的的类的兼容性问题. 二.通俗解释 ADAPTER 适配器模式:在朋友聚会上碰到了一个美女Sar ...