外观模式
亦称: Facade
1. 简介
外观模式是一种结构型设计模式, 能为程序库、框架或其他复杂类提供一个简单的接口。
2. 真实世界类比
当你通过电话给商店下达订单时, 接线员就是该商店的所有服务和部门的外观。接线员为你提供了一个同购物系统、支付网关和各种送货服务进行互动的简单语音接口。
3. 模拟场景
假设你必须在代码中使用某个复杂的库或框架中的众多对象。正常情况下, 你需要负责所有对象的初始化工作、管理其依赖关系并按正确的顺序执行方法等。
最终, 程序中类的业务逻辑将与第三方类的实现细节紧密耦合, 使得理解和维护代码的工作很难进行。
4. 解决方案
外观类为包含许多活动部件的复杂子系统提供一个简单的接口。与直接调用子系统相比, 外观提供的功能可能比较有限, 但它却包含了客户端真正关心的功能。
如果你的程序需要与包含几十种功能的复杂库整合, 但只需使用其中非常少的功能, 那么使用外观模式会非常方便,
4. Java中的类
- javax.faces.context.FacesContext 在底层使用了LifeCycle、ViewHandler和NavigationHandler这几个类, 但绝大多数客户端不知道。
- javax.faces.context.ExternalContext在内部使用了ServletContext、HttpSession、HttpServletRequest、HttpServletResponse和其他一些类。