zoukankan      html  css  js  c++  java
  • 外观模式

    一、概述

    外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。

    主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。

    何时使用: 1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。 2、定义系统的入口。

    二、使用

    示例:

    package pattern.facade;
    
    /**
     * @author zls
     * @date 2020/3/26
     */
    public class FacadeTest {
        public static void main(String[] args) {
            CarMaker carMaker = new CarMaker();
            // 使用起来很简单,直接调用跑就行了,殊不知内部做了很多事情。
            carMaker.benzRun();
            carMaker.bmwRun();
        }
    }
    
    /**
     * 公共接口
     */
    interface Car {
        void run();
    }
    
    /**
     * 大奔
     */
    class Benz implements Car {
        @Override
        public void run() {
            System.out.println("大奔跑得快啊...");
        }
    }
    
    /**
     * 宝马
     */
    class Bmw implements Car {
        @Override
        public void run() {
            System.out.println("宝马跑得稳...");
        }
    }
    
    /**
     * 外观类
     *      隐藏系统复杂性,提供统一的访问接口
     */
    class CarMaker {
        private Car benz;
        private Car bmw;
    
        public CarMaker() {
            benz = new Benz();
            bmw = new Bmw();
        }
    
        /**
         * 隐藏系统的复杂性
         */
        public void benzRun() {
            // ... 也许很复杂,eg: 跑之前,要先环顾车一周,检查有没有人在车底(科三)
            benz.run();
            // ...  eg: 车没油了,跑不动了
        }
    
        /**
         * 隐藏系统的复杂性
         */
        public void bmwRun() {
            // ...如上
            bmw.run();
            // ...如上
        }
    }

    参考:

    https://www.runoob.com/design-pattern/facade-pattern.html

  • 相关阅读:
    kubadm初始化找不到镜像
    ssh登录等待时间长问题
    6.vue之v-html
    5.vue之v-text
    4.vue之data对象
    3.vue之el:挂载点
    2.vue基础test
    1.vue之软件VSCode(自动刷新)
    java计算金额保留两位小数精确到分(四舍六入五成双)
    win7 64位 旗舰版装系统记录及window简记
  • 原文地址:https://www.cnblogs.com/shiyun32/p/12575731.html
Copyright © 2011-2022 走看看