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

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. 2015.04.28,外语,读书笔记-《Word Power Made Easy》 12 “如何奉承朋友” SESSION 36

    1. the great and the small 拉丁词语animus(mind的意思),animus和另一个拉丁词根anima(life principle.soul.spirit),是许多单词 ...

  2. IT关键词,面试知识问与答

    二叉树遍历的三种方式? 遍历是指依次访问⼆叉树中的每个元素.有三种遍历⽅法,分别是前序遍历. 中序遍历和后序遍历.它们是按照访问根节点和⼦节点的先后顺序命名的. • 前序遍历:先访问根节点,然后访问左 ...

  3. Swift-UITextField用法

    文本框的创建,如下几种方式: UITextBorderStyle.None:无边框 UITextBorderStyle.Line:直线边框 UITextBorderStyle.RoundedRect: ...

  4. Java基础——增强for循环

    java1.5版本引入了一个增强for循环,基本原理和for循环类似. 语法声明:for(表达式:条件表达式) 举例:for (String str : set) 解释:set代表set集合,str代 ...

  5. HTML5 CSS3面试题

    一.CSS3有哪些新特性? 1. CSS3实现圆角(border-radius),阴影(box-shadow), 2. 对文字加特效(text-shadow.),线性渐变(gradient),旋转(t ...

  6. 微信小程序引用阿里巴巴矢量图标iconfont

    最近在写微信小程序,但是引用图片,导致项目文件太大,所以就想到引用阿里巴巴矢量图标的方法 第一步:下载阿里巴巴矢量图代码: 第二步:将下载下来的文件中iconfont.ttf转换即可.转换地址:htt ...

  7. Aspx小记

    关闭按钮 protected void Close_Click(object sender, EventArgs e) { //Page.RegisterStartupScript("clo ...

  8. Android 的永久登陆 与注销登陆

    一.永久登陆 sharedprefrence 存储 userID  以及 password private String FILE = "saveUserNamePwd";//用于 ...

  9. 利用Windows2003 IP安全策略实现服务器远程桌面端口(3389)访问控制

    1 开始 → 运行 → 对话框中输入gpedit.msc → 确定 2 打开“组策略编辑器” 计算机配置 → Windows配置 → 右键点击“IP安全策略,在 本地计算机” →选择“创建IP安全策略 ...

  10. 页面加载通过javascript来修改控件属性

    function changeFormElementStatus(tagNames) {            var tagNameArr = tagNames.split("," ...