一、概述
外观模式(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(); // ...如上 } }
参考: