zoukankan      html  css  js  c++  java
  • 设计模式:学习笔记(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();
    }
  • 相关阅读:
    jquery $.fn $.fx 的意思以及使用
    jQuery树形控件zTree使用
    myeclipse9.0安装svn插件
    读取properties和xml中配置文件的值
    Jquery之ShowLoading遮罩组件
    程序员需谨记的8条团队开发原则(转)
    决策树算法
    第N个丑数
    数组反转
    倒数第K个结点
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9063156.html
Copyright © 2011-2022 走看看