1. 适配器模式
  2. 当不需要实现一个接口所提供的所有方法时,可先设计一个抽象类该接口,并为接口每个方法提供一个默认实现
  3. 该抽象类的子类可以选择性地覆盖父类的某些方法来实现需求
  4. 角色
  5. 适配者接口
  6. 通常在接口中声明了大量的方法
  7. 缺省适配器类
  8. 可以用空方法的形式实现接口中声明的方法
  9. 具体业务类
  10. 缺省适配器类的子类

1.机器人接口

  1. package Adapter;
  2. /**
  3. * Created by e550 on 2016/10/3.
  4. */
  5. public interface Robot {
  6. public void cry();
  7. public void move();
  8. }

2.鸟类与鸟类适配器

  1. package Adapter;
  2. /**
  3. * Created by e550 on 2016/10/3.
  4. */
  5. public class Bird {
  6. public void tweedle()
  7. {
  8. System.out.println("鸟儿叽叽叫!");
  9. }
  10. public void fly()
  11. {
  12. System.out.println("鸟儿快快飞!");
  13. }
  14. }
  1. package Adapter;
  2. /**
  3. * Created by e550 on 2016/10/3.
  4. */
  5. public class BirdAdapter extends Bird implements Robot{
  6. public void move() {
  7. System.out.print("机器人模仿:");
  8. super.fly();
  9. }
  10. public void cry() {
  11. System.out.print("机器人模仿:");
  12. super.tweedle();
  13. }
  14. }

3.狗类与狗类适配器

  1. package Adapter;
  2. /**
  3. * Created by e550 on 2016/10/3.
  4. */
  5. public class Dog
  6. {
  7. public void wang()
  8. {
  9. System.out.println("小狗汪汪汪!");
  10. }
  11. public void run()
  12. {
  13. System.out.println("小狗跑跑跑!");
  14. }
  15. }
  1. package Adapter;
  2. /**
  3. * Created by e550 on 2016/10/3.
  4. */
  5. public class DogAdapter extends Dog implements Robot{
  6. public void cry() {
  7. System.out.println("机器人模仿:");
  8. super.wang();
  9. }
  10. public void move() {
  11. System.out.println("机器人模仿:");
  12. super.run();
  13. }
  14. }

4.客户端

  1. package Adapter;
  2. /**
  3. * Created by e550 on 2016/10/3.
  4. */
  5. public class Client
  6. {
  7. public static void main(String args[])
  8. {
  9. Robot robot= new BirdAdapter();
  10. robot.cry();
  11. robot.move();
  12. }
  13. }

执行结果

机器人模仿:鸟儿叽叽叫!

机器人模仿:鸟儿快快飞!

继续进行

5.创建机器鸟类继承鸟类适配器

  1. package Adapter;
  2. /**
  3. * Created by e550 on 2016/10/3.
  4. */
  5. public class RobotBird extends BirdAdapter{
  6. public void cry() {
  7. System.out.println("我是机器鸟:叽叽叽");
  8. }
  9. }

说明,它继承适配器之后,就没必要实现所有的机器接口了。只需要根据使用情况,覆盖适配器中的方法。

修改客户端

  1. package Adapter;
  2. /**
  3. * Created by e550 on 2016/10/3.
  4. */
  5. public class Client
  6. {
  7. public static void main(String args[])
  8. {
  9. Robot robot= new RobotBird();
  10. robot.cry();
  11. robot.move();
  12. }
  13. }

执行结果

我是机器鸟:叽叽叽

机器人模仿:鸟儿快快飞!

JAVA设计模式之【适配器模式】的更多相关文章

  1. java设计模式5——适配器模式

    java设计模式5--适配器模式 1.结构型模式介绍 1.1.作用 从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题. 分类: 适配器模式 代理模式 桥接模式 装饰模式 组合模式 ...

  2. Java设计模式之适配器模式(项目升级案例)

    今天是我学习Java设计模式中的第三个设计模式了,但是天气又开始变得狂热起来,对于我这个凉爽惯了的青藏人来说,又是非常闹心的一件事儿,好了不管怎么样,目标还是目标(争取把23种Java设计模式接触一遍 ...

  3. Java设计模式----初识适配器模式

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  4. Java设计模式应用——适配器模式

    性能监控系统中,存在告警模块和报表模块,告警结果和报表结果都需要导出. 由于告警开发进度较快,已经实现了excel导出.csv导出.zip导出功能,现在报表需要excel导出.csv导出.pdf导出功 ...

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

    转载:<JAVA与模式>之适配器模式 这个总结的挺好的,为了加深印象,我自己再尝试总结一下 1.定义: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法 ...

  6. Java设计模式中适配器模式的实现方法

    在Java开发中,我们常常需要用到Java接口型模式中的适配器模式,那适配器设计模式到底是什么模式呢? 适配器模式(Adapter)就是把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹 ...

  7. 夜话JAVA设计模式之适配器模式(adapter pattern)

    适配器模式:将一个类的接口,转换成客户期望的另一个接口,让不兼容的接口变成兼容. 1.类适配器模式:通过多重继承来实现适配器功能.多重继承就是先继承要转换的实现类,再实现被转换的接口. 2.对象适配器 ...

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

    说到适配器,我们可能会想到电脑的适配器,没错,其实作用是一样的,电脑的适配器在中国可以使用,在美国也可以使用,它的主要作用是在新接口和老接口之间进行适配..这就是一个适配的过程,适配器模式的类图如下: ...

  9. java设计模式之——适配器模式

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

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

    适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题.主要分为三类:类的适配器模式.对象的适配器模式.接口的适配器模式.首先,我们来看看类的适配器模 ...

随机推荐

  1. BZOJ1492:[NOI2007]货币兑换 (CDQ分治+斜率优化DP | splay动态维护凸包)

    BZOJ1492:[NOI2007]货币兑换 题目传送门 [问题描述] 小Y最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A纪念券(以下简称A券)和B纪念券(以下简称B券).每个持有金券的 ...

  2. hdoj--3367--Pseudoforest(伪森林&&最大生成树)

    Pseudoforest Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) To ...

  3. hdoj--1171--Number Sequence(KMP)

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. kubernetes系列:(一)、kubeadm搭建kubernetes(v1.13.1)单节点集群

    kubeadm是Kubernetes官方提供的用于快速部署Kubernetes集群的工具,本篇文章使用kubeadm搭建一个单master节点的k8s集群. 节点部署信息 节点主机名 节点IP 节点角 ...

  5. (转)用Lottie制作动画,我的月薪翻了一番!!

    Lottie是Airbnb发布的开源动画库. 帮助动效落地.学会使用Lottie,会极大地提高工作效率. Lottie是一种新的开发动画的方式. 学会使用Lottie,会极大改善你和开发小哥哥撕逼的情 ...

  6. Oracle 复合索引设计原理——前缀性和可选性

    前缀性: 复合索引的前缀性是指只有当复合索引的第一个字段出现在SQL语句的谓词条件中时,该索引才会被用到.如复合索引为(ename,job,mgr),只要谓词条件中出现第一个字段ename,就可以用复 ...

  7. 【译文】采用chrome的DevTool中TimeLine和profile工具提升Web app性能

    ->译文,原文在这里<- 本文地址: http://www.cnblogs.com/blackmanba/p/web-perfomance-with-Chrome-DevTools.htm ...

  8. JS面向对像编程四—— prototype 对象

    http://blog.csdn.net/fanwenjieok/article/details/54575560 大部分面向对象的编程语言,都是以“类”(class)作为对象体系的语法基础.Java ...

  9. java文件名与class关系

    class与文件名没有必要关系但是public class是要绝对保持一致 例如:class test{ public static void main(String args[]){ System. ...

  10. [置顶] 智能家居开源项目 The open Home Automation Bus (openHAB)

    ================================================================================ 2014-05-19 论文的事情太多, ...