设计模式:学习笔记(10)——适配器模式

 设计模式:学习笔记(10)——适配器模式

引入适配器模式

我们身边的适配器

适配器是什么,你一定不难理解,因为现实中到处都是。比方说:如果你需要在欧洲国家使用美国制作的笔记本电脑,你可能需要一个交流电的适配器......

  

图中所示,交流电适配器位于两者之间,它的工作是将欧式插座转换成美式插座,好让美式插头可以插进这个插座得到电力

适配器改变了插座的接口,以符合美式笔记本电脑的需求。OO适配器和真实世界的适配器扮演者同样的角色:将一个接口转换成另一个接口,以符合客户的期望

面向对象的适配器

  

定义适配器模式

  适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原来接口不兼容的类可以合作无间。

相关类图

  

实例代码

我们定义了一个鸭子接口

public interface Duck{
    public void quack();
    public void fly();
}  

绿头鸭是鸭子的子类

public class MallarDuck implements Duck{
    public void quack()
    {
        System.out.println("Quack");
    }
    public void fly()
    {
        System.out.println("I am flying");
    }
}  

我们定义了一个火鸡

public class WildTurkey{
    public void gobble()
    {
        System.out.println("Gobble gobble");
    }
    public void fly()
    {
        System.out.println("I am flying a short distance");
    }
}
我们 想让火鸡来冒充鸭子,显而易见,因为火鸡的接口不同,我们不能公然拿来用,那么我们编写一个适配器
public class TurkeyAdapter implements Duck{
    WildTurkey turkey;
    public TurkeyAdapter(WildTurkey turkey)
    {
        this.turkey =turkey;
    }
    public void quack()
    {
        turkey.gobble();
    }
    public void fly()
    {
        turkey.fly();
    }
}
现在我们来测试我们的适配器
public static void main(String[] args) {
    MallarDuck duck =  new MallarDuck();
    WildTurkey turkey =new WildTurkey();
    Duck turkeyAdapter = new TurkeyAdapter(turkey);

    duck.fly();
    turkeyAdapter.fly();

    duck.quack();
    turkeyAdapter.quack();
}

猜你喜欢

转载自www.cnblogs.com/MrSaver/p/9063156.html