外观模式

一、概述

外观模式(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

原文地址:https://www.cnblogs.com/shiyun32/p/12575731.html