首页 > 代码库 > 设计模式--适配器模式
设计模式--适配器模式
适配器模式跟现实世界中的适配器一样,都是用于转化达到某种目的。如现实世界中的电源适配器,将220v电源转化成需要的电压。
面向对象的适配器。假设已有一个软件系统,你向往它能和一个新的厂商的类库搭配使用,但是这个新厂商所涉及出来的接口不同于
旧厂商的接口。你不想改变现有的代码,也不能改变厂商的代码,所以需要写一个类,将新厂商的接口转换成你所期望的接口。
就如,如果它走起来像只鸭子,叫起来像只鸭子,那么它可能是一只包装了鸭子适配器的火鸡。。。
public interface Duck{
public void quack();
public void fly();
}
//鸭子类
public class MallardDuck implements Duck{
public void quack(){
System.out.println("Quack");
}
public void fly(){
System.out.println("I am flying");
}
}
//火鸡接口
public interface Turkey{
public void gobble();
public void fly();
}
public class WildTurkey implements Turkey{
public void gobble(){
System.out.println("Goble gobble");
}
public void fly(){
System.out.println(" I am fly a short distance");
}
}
//火鸡适配器
public class TurkeyAdapter implements Duck{
Turkey turkey;
public TrukeyAdapter(Trukey turkey){
this.turkey = turykey;
}
public void quack(){
turkey.gobble();
}
public void fly(){
trukey.fly();
}
}
//测试类
public class DuckTestDrive{
public static void main(String args[]){
MallardDuck duck = new MallardDuck();
WildTurkey turkey = new WildTurkey();
Duck turkeyAdapter = new TrukeyAdapter(trukey);
testDuck(duck);
testDuck(turkayAdapter);
}
static void testDuck(Duck duck){
duck.quack();
duck.fly();
}
}
适配器定义:将一个类的接口,转换成客户期望的另一个接口。适配器让原来接口不兼容的类可以合作无间。
当需要一个现有的类而其接口并不符合你的需要时,就使用适配器。
适配器改变接口以符合客户的期望。
实现一个适配器可能需要一番功夫,也可能不费功夫,视目标接口的大小与复杂程度而定。
适配器将一个对象包装起来以改变接口;装饰者将一个对象包装起来以增加新的行为和责任。