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

  • 相关阅读:
    使用a标签制作tooltips
    使用editorconfig配置你的编辑器
    JointJS绘制流程图
    用highcharts展现你的数据
    css段落首字母下沉
    sklearn框架的系统学习
    numpy删除二维数据矩阵的行和列
    sklearn中机器学习算法评价指标
    sklearn调用逻辑回归算法
    sklearn调用多项式回归
  • 原文地址:https://www.cnblogs.com/shiyun32/p/12575731.html
Copyright © 2011-2022 走看看