将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
[b]意图:[/b]
你想使用一个已经存在的类,而它的接口不符合你的需求。
你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
(仅适用于对象A d a p t e r )你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
[img]http://dl.iteye.com/upload/attachment/240285/3cf15b9c-1143-3c20-a0af-1ad9a014e9fd-thumb.jpg[/img]
适配器:
[b]意图:[/b]
你想使用一个已经存在的类,而它的接口不符合你的需求。
你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
(仅适用于对象A d a p t e r )你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
[img]http://dl.iteye.com/upload/attachment/240285/3cf15b9c-1143-3c20-a0af-1ad9a014e9fd-thumb.jpg[/img]
public class Human {
public void Speak() {
System.out.println(" I can speak");
}
public void run() {
System.out.println("I can run");
}
public void think() {
System.out.println("I can think");
}
}
public interface SpecialMan {
public void fly();
}
适配器:
public class Adapter extends Human implements SpecialMan {
@Override
public void fly() {
System.out.println("I can fly!");
}
}
public class SuperMan extends Adapter{
}
//测试类
public class Test {
public static void main(String[] args) {
SuperMan s = new SuperMan();
s.Speak();
s.run();
s.think();
s.fly();
}
}