博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA设计模式之【适配器模式】
阅读量:5754 次
发布时间:2019-06-18

本文共 2162 字,大约阅读时间需要 7 分钟。

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

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();    }}

执行结果

我是机器鸟:叽叽叽

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

本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/5929238.html,如需转载请自行联系原作者

你可能感兴趣的文章
Java 银联支付官网demo测试及项目整合代码
查看>>
WPF 心形线算法
查看>>
Keil不能跳转到函数的定义怎么办
查看>>
VBS基础篇 - 变量(4) - 变量的存活期
查看>>
HNU 11704 Baidu Post Bar
查看>>
3款新鲜的CSS3&HTML5框架
查看>>
iphone开发中的手势操作:Swipes
查看>>
有关linux 系统/进程使用内存量
查看>>
用 PHP 使 Web 数据分析进入更高境界
查看>>
查询数据库最大的索引、静态类与非静态类的区别、后台操作DIV样式的方法、C#操作TreeView组件中的一些常用方法及具体实现...
查看>>
堪称为经典游戏设计帖整理20个点击回复超高的精品贴
查看>>
CLOC -- Count Lines of Code
查看>>
java.sql.SQLException: 关闭的连接
查看>>
flex---->样式和主题
查看>>
Linux架构
查看>>
php中$GLOBALS
查看>>
消息称亚马逊明年推实时广告交易平台
查看>>
java 截图源码
查看>>
Javascript图像处理——阈值
查看>>
PL SQL DEV 连接64位Oracle
查看>>