• 外观模式理解和示例


    一、是什么

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

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

    二、示例

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

    复杂版:

    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();
        }
    }

    三、总结

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

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

    要点:

    • 外观模式不是简化接口,也将客户从组件的子系统中解耦
    • 外观模式和适配器都可以包装类,但外观模式的意图是简化接口
  • 相关阅读:
    0601 新的冲刺
    0527 演示内容
    0525 项目回顾7.0
    0523 Scrum项目6.0
    0518 Scrum项目5.0
    Scrum 4.0
    0512 操作系统进程调度实验
    0511 backlog 项目管理
    复利计算器之单元测试
    操作系统的实验一实验报告
  • 原文地址:https://www.cnblogs.com/milicool/p/11278599.html
Copyright © 2020-2023  润新知