Skip to content

外观模式

亦称: Facade

1. 简介

外观模式是一种结构型设计模式, 能为程序库、框架或其他复杂类提供一个简单的接口。

2. 真实世界类比

Alt text 当你通过电话给商店下达订单时, 接线员就是该商店的所有服务和部门的外观。接线员为你提供了一个同购物系统、支付网关和各种送货服务进行互动的简单语音接口。

3. 模拟场景

假设你必须在代码中使用某个复杂的库或框架中的众多对象。正常情况下, 你需要负责所有对象的初始化工作、管理其依赖关系并按正确的顺序执行方法等。
最终, 程序中类的业务逻辑将与第三方类的实现细节紧密耦合, 使得理解和维护代码的工作很难进行。

4. 解决方案

外观类为包含许多活动部件的复杂子系统提供一个简单的接口。与直接调用子系统相比, 外观提供的功能可能比较有限, 但它却包含了客户端真正关心的功能。

如果你的程序需要与包含几十种功能的复杂库整合, 但只需使用其中非常少的功能, 那么使用外观模式会非常方便,

4. Java中的类

  • javax.faces.context.FacesContext 在底层使用了Life­Cycle、View­Handler和Navigation­Handler这几个类, 但绝大多数客户端不知道。
  • javax.faces.context.ExternalContext在内部使用了Servlet­Context、Http­Session、Http­Servlet­Request、Http­Servlet­Response和其他一些类。