视频连接:https://www.bilibili.com/video/BV1iQ4y1M7FV/
今天为大家分享一下外观模式:
外观模式动机
我们来通过这个例子,看看外观模式的模式动机:
假设现在在一个餐馆里面,有顾客a、b、c需要点餐吃饭。如左图所示,顾客a、b、c需要自己取点餐,然后自己去取餐,得到自己想点的菜品1、2、3、4、5、6、7等等。再看有图,我们给菜品和顾客之间,增加了一个服务员,顾客就只需要和服务员说明,自己想要什么菜,让服务员来上菜,这样顾客就不需要跑来跑去去拿每一个菜了。这里的服务员即外观角色。引入外观角色之后,用户只需要直接与外观角色交互,用户与子系统之间的复杂关系由外观角色来实现,从而降低了系统的耦合度。
外观模式模式结构
外观模式的定义
模式分析
模式优缺点
外观模式的结构与实现
1. 模式的结构
外观(Facade)模式包含以下主要角色。
- 外观(Facade)角色:为多个子系统对外提供一个共同的接口。
- 子系统(Sub System)角色:实现系统的部分功能,客户可以通过外观角色访问它。
- 客户(Client)角色:通过一个外观角色访问各个子系统的功能。
实现代码
package facade; public class FacadePattern { public static void main(String[] args) { Facade f=new Facade(); f.method(); } } //外观角色 class Facade { private SubSystem01 obj1=new SubSystem01(); private SubSystem02 obj2=new SubSystem02(); private SubSystem03 obj3=new SubSystem03(); public void method() { obj1.method1(); obj2.method2(); obj3.method3(); } } //子系统角色 class SubSystem01 { public void method1() { System.out.println("子系统01的method1()被调用!"); } } //子系统角色 class SubSystem02 { public void method2() { System.out.println("子系统02的method2()被调用!"); } } //子系统角色 class SubSystem03 { public void method3() { System.out.println("子系统03的method3()被调用!"); } }