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

1.机器人接口

package Adapter;

/**
* Created by e550 on 2016/10/3.
*/
public interface Robot {
public void cry();
public void move();
}

2.鸟类与鸟类适配器

package Adapter;

/**
* Created by e550 on 2016/10/3.
*/
public class Bird {
public void tweedle()
{
System.out.println("鸟儿叽叽叫!");
} public void fly()
{
System.out.println("鸟儿快快飞!");
}
}
package Adapter;

/**
* Created by e550 on 2016/10/3.
*/
public class BirdAdapter extends Bird implements Robot{
public void move() {
System.out.print("机器人模仿:");
super.fly();
} public void cry() {
System.out.print("机器人模仿:");
super.tweedle();
} }

3.狗类与狗类适配器

package Adapter;

/**
* Created by e550 on 2016/10/3.
*/
public class Dog
{
public void wang()
{
System.out.println("小狗汪汪汪!");
} public void run()
{
System.out.println("小狗跑跑跑!");
}
}
package Adapter;

/**
* Created by e550 on 2016/10/3.
*/
public class DogAdapter extends Dog implements Robot{
public void cry() {
System.out.println("机器人模仿:");
super.wang();
} public void move() {
System.out.println("机器人模仿:");
super.run();
}
}

4.客户端

package Adapter;

/**
* Created by e550 on 2016/10/3.
*/
public class Client
{
public static void main(String args[])
{
Robot robot= new BirdAdapter();
robot.cry();
robot.move();
}
}

执行结果

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

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

继续进行

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

package Adapter;

/**
* Created by e550 on 2016/10/3.
*/
public class RobotBird extends BirdAdapter{
public void cry() {
System.out.println("我是机器鸟:叽叽叽");
}
}

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

修改客户端

package Adapter;

/**
* Created by e550 on 2016/10/3.
*/
public class Client
{
public static void main(String args[])
{
Robot robot= new RobotBird();
robot.cry();
robot.move();
}
}

执行结果

我是机器鸟:叽叽叽

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

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. File and Folder Permissions

    https://msdn.microsoft.com/en-us/library/bb727008.aspx On NTFS volumes, you can set security permiss ...

  2. 再续iOS开发中的这些权限

    前言 上篇文章iOS开发中的这些权限,你搞懂了吗?介绍了一些常用权限的获取和请求方法,知道这些方法的使用基本上可以搞定大部分应用的权限访问的需求.但是,这些方法并不全面,不能涵盖住所有权限访问的方法. ...

  3. Oracle RAC 全局等待事件 gc current block busy 和 gc cr multi block request 说明--转载(http://blog.csdn.net/tianlesoftware/article/details/7777511)

    一.RAC 全局等待事件说明 在RAC环境中,和全局调整缓存相关的最常见的等待事件是global cache cr request,global cache busy和equeue. 当一个进程访问需 ...

  4. QT-helloworld-QtCreater编写

    前言:纯代码编写helloworld,解析代码含义. 一.新建空项目 新建->其他项目->Empty qmake Project 二.修改.pro文件 打开helloworld.pro文件 ...

  5. EF Code First 使用(一)

    第一步:创建MVC5项目,添加数据库实体,建立上下文对象. 第二步:创建数据库和添加数据

  6. IIS7.0与AP.NET

    IIS7在请求的监听和分发机制上进行了革新性的改进,主要体现在对于Windows进行激活服务(Windows Process Activation Service ,WAS)的引入,将原来的W3SVC ...

  7. surface 更新提示

  8. Hibernate框架学习(五)——批量查询(概述)

    一.HQL查询(Hibernate Query Language)多表查询,但不复杂时使用 Hibernate独家查询语言,属于面向对象的查询语言 1.基本查询 2.条件查询 注意:HQL语句中不可能 ...

  9. [USACO17FEB] Why Did the Cow Cross the Road I P (树状数组求逆序对 易错题)

    题目大意:给你两个序列,可以序列进行若干次旋转操作(两个都可以转),对两个序列相同权值的地方连边,求最少的交点数 记录某个值在第一个序列的位置,再记录第二个序列中某个值 在第一个序列出现的位置 ,求逆 ...

  10. php的更新

    因为 PHP 那“集百家之长”的蛋疼语法,加上社区氛围不好,很多人对新版本,新特征并无兴趣.本文将会介绍自 PHP5.2 起,直至 PHP5.6 中增加的新特征 本文目录:PHP5.2 以前:auto ...