🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 概述 **外观模式**是一种结构型设计模式,能为程序库、框架或其他复杂类提供一个简单的接口。 **问题:**假设你必须在代码中使用某个复杂的库或框架中的众多对象。 正常情况下, 你需要负责所有对象的初始化工作、 管理其依赖关系并按正确的顺序执行方法等 **解决办法:**外观类为包含许多活动部件的复杂子系统提供一个简单的接口 ## 外观模式结构 ![](https://img.kancloud.cn/bf/bd/bfbd7906be9c539c80507959e05763e9_1120x760.png) 1. 外观 (Facade) 提供了一种访问特定子系统功能的便捷方式, 其了解如何重定向客户端请求, 知晓如何操作一切活动部件。 2. 创建附加外观 (Additional Facade) 类可以避免多种不相关的功能污染单一外观, 使其变成又一个复杂结构。 客户端和其他外观都可使用附加外观。 3. 复杂子系统 (Complex Subsystem) 由数十个不同对象构成。 如果要用这些对象完成有意义的工作, 你必须深入了解子系统的实现细节, 比如按照正确顺序初始化对象和为其提供正确格式的数据。 4. 客户端 (Client) 使用外观代替对子系统对象的直接调用。 ## 适合应用场景 1. 如果你需要一个指向复杂子系统的直接接口,且该接口的功能有限,则可以使用外观模式。 2. 如果需要将子系统组织为多层结构, 可以使用外观。