Java设计模式----适配器模式

来源:互联网 发布:知豆可以开多少公里 编辑:程序博客网 时间:2024/06/06 18:30

本文以一只残废狗为例,狗本身应该有吃和跑两个能力,但是该狗只有吃的能力,通过适配器模式实现狗可以跑的功能.

1. 类适配器

1.1 先创建一个狗的接口,具有跑和吃两个方法

/** * 定义狗接口,具备2个功能 *  1- 狗能跑 *  2- 狗能吃 */public interface Dog {    public void run();    public void eat();}

1.2 实际有残疾狗只能吃

/** * 定义残废狗 * 残废狗只能吃 */public class DisabledDog {    public void eat(){         System.out.println("Dog can eat!");     }}

1.3 残疾狗的适配器

/** * 创建适配器 *  1- 残废狗使用了适配器(安装假肢) *  2- 残废狗实现了狗类接口 */public class Adapter extends DisabledDog implements Dog{    @Override    public void run() {         System.out.println("Dog can run!");     }    // 残废狗本身就能吃,所以残废狗不需要实现狗接口的吃方法}

1.4 残废狗使用适配器

/** * 定义使用类 * 残废狗尝试跑和吃 */public class Play {    public static void main(String[] args) {        // 残废狗装载适配器(假肢)        Dog dog = new Adapter();        dog.eat();        // 残废狗尝试跑        dog.run();    }}

2. 方法适配器

2.1 残疾狗的适配器
将1.3的适配器修改

/** * 创建适配器 *  1- 残废狗使用了适配器(安装假肢) *  2- 残废狗实现了狗类接口 */public class AdapterBox implements Dog{    // 残废狗来看医生    private DisabledDog disabledDog;    // 给残废狗使用的适配器    public AdapterBox(DisabledDog disabledDog){        super();        this.disabledDog = disabledDog;    }    // 狗医生通过适配器帮助残废狗实现跑    @Override    public void run() {         System.out.println("Dog can run!");     }    // 狗自己实现吃    @Override    public void eat() {         disabledDog.eat();     }}