zoukankan      html  css  js  c++  java
  • 外观模式理解和示例

    一、是什么

    定义:简化一群类的接口,达到屏蔽代码的复杂度

    使用场景: 封装一系列复杂接口,以提供一个服务,简化接口

    二、示例

    现在模拟在家看漫威,哈哈哈

    复杂版:

    1. 打开遥控器
    2. 选择电影栏目
    3. 选择钢铁侠
    4. 打开电影

    使用外观模式,将负责封装后就变为:

      1. 打开钢铁侠电影

    代码:

    /**
     * 遥控器类
     */
    public class RemoteControl {
    
        public void openTV() {
            System.out.println("打开电视");
        }
    }

    电视类

    /**
     * 电视类
     */
    public class TV {
    
        /**
         * 选择电影频道
         */
        public void choiceFilmChannel() {
            System.out.println("选择电影频道");
        }
    
        /**
         * 选择钢铁侠
         */
        public void choiceIronMan() {
            System.out.println("选择钢铁侠电影");
        }
    
        /**
         * 打开电影
         */
        public void openFilm() {
            System.out.println("打开电影");
        }
    }

    测试类:没有用外观模式时,我们需要这几步能看电影

    /**
     * 看钢铁侠电影 测试类
     */
    public class Test {
    
        public static void main(String[] args) {
    
            // ================== 复杂的方式 =========================
            RemoteControl remoteControl = new RemoteControl();
            TV tv = new TV();
    
            remoteControl.openTV();
            tv.choiceFilmChannel();
            tv.choiceIronMan();
            tv.openFilm();
        }
    }

    使用外观模式

    /**
     * 外观模式下的看电影
     */
    public class SeeFilmFacade {
    
        public void seeFilm() {
            RemoteControl remoteControl = new RemoteControl();
            TV tv = new TV();
    
            remoteControl.openTV();
            tv.choiceFilmChannel();
            tv.choiceIronMan();
            tv.openFilm();
        }
    }

    测试类: 使用外观模式

    /**
     * 看钢铁侠电影 测试类
     */
    public class Test {
    
        public static void main(String[] args) {
            
            // ================== 外观模式 =========================
            SeeFilmFacade seeFilmFacade = new SeeFilmFacade();
            seeFilmFacade.seeFilm();
        }
    }

    三、总结

    这个模式看似简单,实际也简单

    里面有个原则需关注:最少知识原则

    要点:

    • 外观模式不是简化接口,也将客户从组件的子系统中解耦
    • 外观模式和适配器都可以包装类,但外观模式的意图是简化接口
  • 相关阅读:
    Globus Toolkit 4.0正式版发布
    五四爱国纪念歌——最早反映五四运动的歌曲(zz)
    历史上的昨天和今天(zz)
    苹果:2.7GHz G5比3.6GHz P4快98%(zz)
    上海地铁又有人跳轨……
    使用IPAddress解析IP地址时要注意的问题
    WinHEC:电脑硬件和微软OS发展历程展(zz)
    emplace_back与push_back方法的区别
    处理Excel,填充空白区域
    折腾词库,一个词库互转程序
  • 原文地址:https://www.cnblogs.com/milicool/p/11278599.html
Copyright © 2011-2022 走看看