适配器模式

分为对象适配和类适配,由于java不支持多继承,所以只有对象适配。

适配就是将不合适的接口通过适配变得合适,使用的是组合的关系。

在下面:MenRobot和DogRobot就是适配器。

一个机器人接口

会叫和移动

public interface Robot {
    public void sound();

    public void move();
}

希望它像人一样说话和走路

MenRobot

public class Men {
    public void speak() {
        System.out.println("人在说话...");
    }

    public void walk() {
        System.out.println("人在走路...");
    }
}

下面是适配器:

public class MenRobot implements Robot {

    Men men;

    public MenRobot(Men m) {
        this.men = m;
    }

    @Override
    public void sound() {
        men.speak();
    }

    @Override
    public void move() {
        men.walk();
    }

}

客户端如何使用:

public static void main(String[] args) {
        Men m = new Men();
        Robot r = new MenRobot(m);
        r.sound();
        r.move();
    }

现在希望它像狗一样叫,我们已经有狗了。

DogRobot

public class Dog {
    public void bark() {
        System.out.println("狗在汪汪叫...");
    }

    public void run() {
        System.out.println("狗在跑步...");
    }
}

下面是适配器:

public class DogRobot implements Robot {

    Dog d;

    public DogRobot(Dog d) {
        this.d = d;
    }

    @Override
    public void sound() {
        d.bark();
    }

    @Override
    public void move() {
        d.run();
    }

}

使用:

r = new DogRobot(new Dog());
        r.sound();
        r.move();

结果:

人在说话...
人在走路...
狗在汪汪叫...
狗在跑步...

results matching ""

    No results matching ""