适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配。

场景:电脑读取内存卡中的内容,内存卡是没有办法直接插在电脑的USB接口上,那就不需要一个转换器。

下面的例子实现了上述的功能

  1. /**
  2. * @author liusongwei
  3. * @Title: MemoryCard
  4. * @ProjectName demohystrix
  5. * @Description: 定义一个内存卡接口
  6. * @date 2018/12/279:15
  7. */
  8. public interface MemoryCard {
  9. public String novel();
  10. }
  1. package com.example.demohystrix.designpattern.structure.adapter;
  2.  
  3. /**
  4. * @author liusongwei
  5. * @Title: MemoryCardImpl
  6. * @ProjectName demohystrix
  7. * @Description: 实现内存卡接口并编写内存中的内容
  8. * @date 2018/12/279:18
  9. */
  10. public class MemoryCardImpl implements MemoryCard {
  11. @Override
  12. public String novel() {
  13. System.out.println("开始读取小说中的内容");
  14. return "盘古开天辟地,名曰《斗鱼》";
  15. }
  16. }
  1. package com.example.demohystrix.designpattern.structure.adapter;
  2.  
  3. /**
  4. * @author liusongwei
  5. * @Title: Computer
  6. * @ProjectName demohystrix
  7. * @Description: 定义一个电脑接口
  8. * @date 2018/12/279:17
  9. */
  10. public interface Computer {
  11. public void read();
  12. }
  1. package com.example.demohystrix.designpattern.structure.adapter;
  2.  
  3. /**
  4. * @author liusongwei
  5. * @Title: Adapter
  6. * @ProjectName demohystrix
  7. * @Description: 实现一个电脑接口的适配器,并读取内存卡中的内容
  8. * @date 2018/12/279:20
  9. */
  10. public class Adapter implements Computer {
  11. private MemoryCard memoryCard;
  12.  
  13. public Adapter(MemoryCard memoryCard){
  14. this.memoryCard = memoryCard;
  15. }
  16. @Override
  17. public void read() {
  18. String str = memoryCard.novel();
  19. System.out.println("读取的内容为:" + str);
  20. }
  21. }
  1. package com.example.demohystrix.designpattern.structure.adapter;
  2.  
  3. /**
  4. * @author liusongwei
  5. * @Title: Demo
  6. * @ProjectName demohystrix
  7. * @Description: TODO
  8. * @date 2018/12/279:22
  9. */
  10. public class Demo {
  11. public static void main(String[] args){
  12. Computer computer = new Adapter(new MemoryCardImpl());
  13. computer.read();
  14. }
  15. }

输出内容为:

java 适配器模式(adapter pattern)的更多相关文章

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

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

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

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

  3. 设计模式系列之适配器模式(Adapter Pattern)——不兼容结构的协调

    模式概述 模式定义 模式结构图 模式伪代码 类适配器,双向适配器,缺省适配器 类适配器 双向适配器 缺省适配器 模式应用 模式在JDK中的应用 模式在开源项目中的应用 模式总结 主要优点 主要缺点 适 ...

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

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

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

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

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

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

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

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

  8. Java设计模式之适配器模式(Adapter Pattern)

    Adapter Pattern的作用是在不改变功能的前提下转换接口.Adapter分为两类,一类是Object Adapter, 还有一类是Class Adapter.因为Class Adapter的 ...

  9. 设计模式(七): 通过转接头来观察"适配器模式"(Adapter Pattern)

    在前面一篇博客中介绍了“命令模式”(Command Pattern),今天博客的主题是“适配器模式”(Adapter Pattern).适配器模式用处还是比较多的,如果你对“适配器模式”理解呢,那么自 ...

随机推荐

  1. JavaSE 常用类与其方法

    1.基本数据类型比较用:== 2.引用数据类型比较用:equals方法 如果引用数据类型使用==比较的话,比较的是地址值 toString类 对象调用toString()需要重写本方法: 在封装类中, ...

  2. Java使用foreach语句对数组成员遍历输出

    /** * 本程序使用foreach语句对数组成员进行遍历输出 * @author Lei * @version 2018-7-23 */ public class ForeachDemo { pub ...

  3. hadoop之 hadoop能为企业做什么?

    hadoop是什么? Hadoop是一个开源的框架,可编写和运行分不是应用处理大规模数据,是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式.Hadoop=HDFS( ...

  4. MEF 插件式开发之 WPF 初体验

    MEF 在 WPF 中的简单应用 MEF 的开发模式主要适用于插件化的业务场景中,C/S 和 B/S 中都有相应的使用场景,其中包括但不限于 ASP.NET MVC .ASP WebForms.WPF ...

  5. C#多线程——同步

    多个线程(不仅仅局限于相同进程)如果需要访问相同的可变资源的话就可能需要考虑到线程同步的手段.CPU的线程和进程管控我这里就不去说了,计算机组成原理里面的东西 那么既然要让线程的步调一致,那么我们首先 ...

  6. flex 布局下,css 设置文本不换行时,省略号不显示的解决办法

    大致是有一个 main 容器是 flex 布局,左边一个 logo 固定宽高,右边 content 动态宽度. <div class="main"> <img a ...

  7. 【读书笔记】iOS-方法声明

    编译的时候 ,编译器会把方法前面的IBAction替换成void,把属性前面的IBOutlet移除掉,因为这些都 只是Interface Builder的标志而已.这个IBAction方法会被UI控件 ...

  8. SGCC_UAP启动停留在initializing java tooling(1%)

    找到uap的安装目录,eclipse文件夹下的eclipse.ini,用EditPlus打开,添加下面两行 -vmC:\Program Files\Java\jdk1.6.0_43\bin\ 在-vm ...

  9. maven(三):maven项目结构及其运行机制

    在上一篇中讲了如何创建maven项目,现在回到那个项目 项目结构 src/main/java:java代码目录 src/main/resources:资源目录,比如spring.xml文件,prope ...

  10. etcd raft如何实现Linearizable Read

    Linearizable Read通俗来讲,就是读请求需要读到最新的已经commit的数据,不会读到老数据. 对于使用raft协议来保证多副本强一致的系统中,读写请求都可以通过走一次raft协议来满足 ...