[*]首先声明一个鸟类的接口,鸟会飞,还会唱歌
[*]创建老鹰类,实现鸟类接口
[*]创建家禽接口,家禽也能飞,叫
[*]创建家禽实现类鸭子,鸭子飞得不高,只会嘎嘎叫
[*]现在领导要来观察老鹰,但是现在没有老鹰,好吧,那就抓一只鸭子来冒充吧,披上老鹰皮的鸭子
[*]让鸭子能披上老鹰皮的,就是那个适配器Adapter,里面真的包了一只鸭子,会装的鸭子
[*]运行结果如下:
[b]总结:[/b]适配器模式的用处在于装,将类从一个接口,转换到另外一个接口,使原来不一样的类,至少可以看起来是一样的
package com.adapter;
public interface Bird {
public void sing();
public void fly();
}
[*]创建老鹰类,实现鸟类接口
package com.adapter;
public class Eagle implements Bird {
public void fly() {
System.out.println("I am an eagle, I can fly high");
}
public void sing() {
System.out.println("I can sing loud");
}
}
[*]创建家禽接口,家禽也能飞,叫
package com.adapter;
public interface JiaQin {
public void fly();
public void jiao();
}
[*]创建家禽实现类鸭子,鸭子飞得不高,只会嘎嘎叫
package com.adapter;
public class Duck implements JiaQin {
public void fly() {
System.out.println("I can fly a little");
}
public void jiao() {
System.out.println("I can quack");
}
}
[*]现在领导要来观察老鹰,但是现在没有老鹰,好吧,那就抓一只鸭子来冒充吧,披上老鹰皮的鸭子
package com.adapter;
public class BirdTest {
public static void main(String[] args){
JiaQin duck = new Duck();
//假的老鹰,去冒充鸟类,使之也可以被观察
Adapter phonyEagle = new Adapter(duck);
observerTheBird(phonyEagle);
}
//观察鸟类方法
public static void observerTheBird(Bird b){
b.fly();
b.sing();
}
}
[*]让鸭子能披上老鹰皮的,就是那个适配器Adapter,里面真的包了一只鸭子,会装的鸭子
package com.adapter;
public class Adapter implements Bird {
private JiaQin duck;
Adapter(JiaQin duck){
this.duck = duck;
}
public void fly() {
duck.fly();
}
public void sing() {
duck.jiao();
}
}
[*]运行结果如下:
I can fly a little
I can quack
[b]总结:[/b]适配器模式的用处在于装,将类从一个接口,转换到另外一个接口,使原来不一样的类,至少可以看起来是一样的