java设计模式之适配器模式

来源:互联网 发布:noppoo choc mac 编辑:程序博客网 时间:2024/06/11 12:10

一、什么是适配器模式

这里写图片描述
将一个类的接口,转换成期望的另外一个接口,使得由于接口不兼容而不能一起工作的那些类可以一起工作。用通俗的话讲:

*适配器模式中有4个角色:客户端、目标接口、适配器、被适配类。客户端想要的接口是目标接口的样子;被适配器类提供的是接口的另一种样子;适配器在中间起到一个连接两者的作用,把被适配器类改造为目标接口的样子。*

二、下面来看一个实际的例子

鸭子接口

//鸭子有两种简单的行为,呱呱叫和飞public interface Duck{public void quack();public void fly();}

鸭子的实现类

public class MallardDuck implements DuckP{public void quack(){System.out.println("嘎嘎。。。。。。");}public void fly(){System.out.println("我是鸭子我在飞。。。。。。");}}

火鸡的接口

public interface Turkey{public void gobble();//火鸡是咕咕叫的public void fly();}

火鸡的实现类

public void WildTurkey implements Turkey{public void gobble(){System.out.println("咕咕咕。。。。");}public void fly(){System.out.println("我在飞但是飞不远。。。。。。");}}

火鸡适配器(把火鸡转变成了鸭子,这样就可以像使用鸭子一样使用火鸡了)

public void TurkeyAdapter implements Duck{Turkey turkey;传入一只火鸡,待会儿要调用它的叫声public TurkeyAdapter(Turkey turkey){this.turkey=turkey;}//看上去是鸭子叫,实际上发出来的是火鸡的声音public void quack(){turkey.gobble();}//看上去是鸭子飞,实际上是火鸡飞的public void fly(){turkey.fly();}}

main方法用来测试

public class DuckTestDrive{public static void main(String[] args){MallardDuck duck=new MallardDuck();WildTurkey turkey=new WildTurkey();Duck turkeyAdapter=new TurkeyAdapter(turkey);System.out.println("火鸡说。。。");turkey.gobble9);tukey.fly();System.out.println("鸭子说。。。");testDuck(duck);System.out.println("火鸡适配器说。。。。。");testDuck(turkeyAdapter);}**//这就是那个要用鸭子的方法**static void testDuck(){duck.quack();duck.fly();}}
0 0