【适配器模式】将一个类的接口,转换成客户期望的另外一个接口。适配器让原本接口不兼容的类可以合作无间。

1,Duck接口

package com.pattern.adapter;public interface Duck {public void quack();public void fly();}

2,Duck实现类

package com.pattern.adapter;public class MallardDuck implements Duck{/** * @see com.pattern.adapter.Duck#quack()*/@Overridepublic void quack() {System.out.println("Quack");}/** * @see com.pattern.adapter.Duck#fly()*/@Overridepublic void fly() {System.out.println("I'm flying");}}

3,Turkey接口

package com.pattern.adapter;public interface Turkey {public void gobble();public void fly();}

4,Turkey实现类

package com.pattern.adapter;public class WildTurkey implements Turkey{/** * @see com.pattern.adapter.Turkey#gobble()*/@Overridepublic void gobble() {System.out.println("Gobble gobble");}/** * @see com.pattern.adapter.Turkey#fly()*/@Overridepublic void fly() {System.out.println("I'm flying a short distance");}}

5,适配器类

package com.pattern.adapter;public class TurkeyAdapter implements Duck{Turkey turkey;public TurkeyAdapter(Turkey turkey){this.turkey = turkey;}/** * @see com.pattern.adapter.Duck#quack()*/@Overridepublic void quack() {turkey.gobble();}/** * @see com.pattern.adapter.Duck#fly()*/@Overridepublic void fly() {for(int i=0;i<5;i++){turkey.fly();}}}

6,测试类

package com.pattern.adapter;public class DuckTestDrive {public static void main(String[] args) {MallardDuck duck = new MallardDuck();WildTurkey turkey = new WildTurkey();Duck turkeyAdapter = new TurkeyAdapter(turkey);System.out.println("The Turkey says....");turkey.gobble();turkey.fly();System.out.println("\n The Duck says...");testDuck(duck);System.out.println("\n TurkeyAdapter says...");testDuck(turkeyAdapter);}static void testDuck(Duck duck){duck.quack();duck.fly();}
}

输出结果为:

The Turkey says....
Gobble gobble
I'm flying a short distance

The Duck says...
Quack
I'm flying

TurkeyAdapter says...
Gobble gobble
I'm flying a short distance
I'm flying a short distance
I'm flying a short distance
I'm flying a short distance
I'm flying a short distance

类图为:

转载于:https://www.cnblogs.com/mengjianzhou/p/5986812.html

java设计模式(八) 适配器模式相关推荐

  1. Java设计模式之适配器模式(属于结构型模式)

    Java设计模式之适配器模式(结构型模式) 定义:将一个类的接口转换成客户希望的另外一个接口.Adaptor模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 模式中的角色: 目标接口(T ...

  2. Java 设计模式之适配器模式

    一.了解适配器模式 1.1 什么是适配器模式 适配器模式将一个类的接口,转换成客户期望的另一个接口.适配器让原来接口不兼容的类可以合作无间.适配器模式有两种:"对象"适配器和&qu ...

  3. ​JAVA设计模式(九)——适配器模式

    下图为所有设计模式,带标记为重点掌握以及工作中常用到的:   适配器模式属于结构型模式之一,顾名思义,肯定会存在一个适配器的类去进行适配.比如我们以前的笔记本电脑如果要读取我们手机的内存卡,直接读取是 ...

  4. Java设计模式之适配器模式

    适配器模式使那些原本由于接口不兼容而不能一起工作的类可以一起工作. 这里我们举一个例子说明适配器设计模式. 上面的类图中,我定义了两个接口,一个BigPlants接口一个SmartPlants接口,他 ...

  5. java设计模式 之适配器模式

    <JAVA与模式>一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作 ...

  6. java设计模式adapter,java设计模式-适配器模式(Adapter)

    定义 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极 ...

  7. 2020 java设计模式之适配器模式

    适配器模式: 1 初步认识 适配器模式的定义: 将一个类的接口转成客户期望的另外一个接口.适配器模式使得原本由于接口不匹配而不能一起工作的那些类可以一起工作. 通俗的讲法:用电器来打个比喻:有一个电器 ...

  8. (设计模式六)java设计模式之适配器模式

    适配器模式将一个类的接口适配成用户所期待的.一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中. 一.解决问题: 即Adapter模式使得原本由于 ...

  9. Java 设计模式(适配器模式与外观模式)

    适配器模式 包装某些对象,让它们的接口看起来不像自己而像是别的东西. 将一个类的接口转换成客户期望的另一个接口.适配器让原本接口不兼容的类可以合作无间. 比如现有一个软件系统,有一些接口,但是与所需的 ...

  10. Java设计模式(八):外观设计模式

    1. 应用场景 当我们访问的子系统拥有复杂额结构,内部调用繁杂,初接触者根本无从下手时,不凡由资深者为这个子系统设计一个外观类来供访问者使用,统一访问路径(集中到外观类中),将繁杂的调用结合起来形成一 ...

最新文章

  1. 动态规划:求最大公共子串
  2. 基于深度学习Superpoint 的Python图像全景拼接
  3. mfc作为服务端,android作为客服端进行socket通讯,android在wifi下手机与电脑的socket通信...
  4. 配置oracle 11g环境,oracle 11g 的安装环境的配置
  5. HIVE 在执行大量数据JOIN的时候,容易产生内存不足的情况
  6. 同步(Synchronization)和异步(Asynchronous)
  7. JMeter的PUT请求,响应结果中文出现乱码的解决方法
  8. Java 中 String 的常用方法(二)
  9. RabbitMQ延迟消息的极限是多少?
  10. 1-Tenor AF AFT400-实战-基本配置
  11. (16) Node.js 模块的加载逻辑
  12. osx+配置+php扩展,Mac系统升级到10.9(mavericks)时安装php扩展问题解决
  13. 南昌大学计算机接收调剂的条件,关于2018年河南昌大学学硕士研究生接收调剂程序及要求的须知详情...
  14. Leetcode 742.二叉树最近的叶子结点
  15. golang mysql scan_在Golang中对MySQL进行操作
  16. 游戏开发之多态及虚函数(C++基础)
  17. 利用java反射原理写了一个简单赋值和取值通用类【改】
  18. Java-NIO(一):简介
  19. 浏览器滚动条默认样式改变
  20. 大数据技术原理与应用——期末复习

热门文章

  1. android按任意建关闭对话框,Android: 创建一个AlertDialog对话框,必须按确定或取消按钮才能关闭对话框,禁止按[返回键]或[搜索键]关闭...
  2. android go 刷机教程,安卓用的久了,如何刷机?安卓手机线刷教程
  3. python 队列实现_Python Queue队列实现线程通信
  4. svg实现loading效果
  5. 大一考二级c语言,大专学生计算机二级是大一考还是大二考
  6. 20190825:(leetcode习题)最长公共前缀
  7. 20190824:(leetcode习题)报数
  8. 事物与持久化_DDD之聚合持久化应该怎么做?
  9. gis插入的文本怎么搞成两行_逻辑图怎么画?图文详解带你绘制逻辑图
  10. Netty短时间内大量写消息导致的内存问题