zoukankan      html  css  js  c++  java
  • head first 设计模式笔记7-适配器模式与外观模式

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

      这个模式可以通过创建适配器进行接口转换,让不兼容的接口变成兼容。这可以让客户从实现的接口解耦。如果在一段时间之后,我们想要改变接口,适配器可以将改变的部分封装起来,客户不必为了应对不同的接口而每次跟着修改。

       Duck

    /**
     * @author oy
     * @date 2019年9月8日 下午3:45:05
     * @version 1.0.0
     */
    public interface Duck {
        public void quack();
        public void fly();
    }

      Turkey

    public interface Turkey {
        // 火鸡不会呱呱叫,只会咯咯叫
        public void gobble();
        // 火鸡会飞,只是飞不远
        public void fly();
    }

      WildTurkey

    public class WildTurkey implements Turkey {
        @Override
        public void gobble() {
            System.out.println("Gobble gobble...");
        }
        @Override
        public void fly() {
            System.out.println("I'm flying a short distance");
        }
    }

      TurkeyAdapter

    /**
     * 包装一只火鸡,使之看起来像是鸭子
     * @author oy
     * @date 2019年9月8日 下午3:53:40
     * @version 1.0.0
     */
    public class TurkeyAdapter implements Duck {
        Turkey turkey;
        
        public TurkeyAdapter(Turkey turkey) {
            this.turkey = turkey;
        }
    
        @Override
        public void quack() {
            turkey.gobble();
        }
    
        @Override
        public void fly() {
            turkey.fly();
        }
    }

       测试:

    public static void main(String[] args) {
        TurkeyAdapter trukeyAdapter = new TurkeyAdapter(new WildTurkey());
        trukeyAdapter.quack();
        trukeyAdapter.fly();
    }

     ---

  • 相关阅读:
    [python] defaultdict
    [VM workstation]VM workstation 中的虚拟机连不上网络
    [Docker] docker 基础学习笔记1(共6篇)
    [python] import curses
    servlet 产生随机验证码
    JSTL标签库 sql标签
    JSTLLearning
    Ajax实现联想(建议)功能
    HDU 1241
    Servlet实现文件上传
  • 原文地址:https://www.cnblogs.com/xy-ouyang/p/11486864.html
Copyright © 2011-2022 走看看