GoF设计模式:外观模式(Facade Pattern)—提供统一的入口-C/S开发框架
模式概述绝大多数 在软件开发中,有时候为了完成一项较为复杂的功能,一个客户类需要和多个业务类交互,而这些需要交互的业务类经常会作为一个整体出现,由于涉及到的类比较多,导致使用时代码较为复杂,此时,特别需要一个类似服务员一样的角色,由它来负责和多个业务类进行交互,而客户类只需与该类交互。 模式定义外观模式中,一个子系统的外部与其内部的通信通过一个统一的外观类进行,外观类将客户类与子系统的内部复杂性分隔开,使得客户类只需要与外观角色打交道,而不需要与子系统内部的很多对象打交道。
外观模式又称为门面模式,它是一种对象结构型模式。外观模式是 模式结构图外观模式没有一个一般化的类图描述,下图所示的类图也可以作为描述外观模式的结构图: 外观模式包含如下两个角色:
模式伪代码外观模式中所指的
引入外观类,与子系统业务类之间的交互统一由外观类来完成
由于在外观类中维持了对子系统对象的引用,客户端可以通过外观类来间接调用子系统对象的业务方法,而无须与子系统对象直接交互。引入外观类后,客户端代码变得非常简单,典型代码如下:
模式改进在标准的外观模式中,如果需要增加、删除或更换与外观类交互的子系统类,必须修改外观类或客户端的源代码,这将违背开闭原则,因此可以通过引入抽象外观类来对系统进行改进,在一定程度上可以解决该问题。在引入抽象外观类之后,客户端可以针对抽象外观类进行编程,对于新的业务需求,不需要修改原有外观类,而对应增加一个新的具体外观类,由新的具体外观类来关联新的子系统对象。 定义抽象外观类
根据具体的场景,实现具体的外观类
客户端针对抽象外观类进行编程,代码片段如下:
模式应用个人认为外观模式某些情况下可以看成是对既有系统的再次封装,所以各种类库、工具库(比如 所以,你可能在很多开源代码中看到类似 例子太多,以致于不知道举啥例子(实际是偷懒的借口O(∩_∩)O哈哈~)。 模式总结外观模式并不给系统增加任何新功能,它仅仅是简化调用接口。在几乎所有的软件中都能够找到外观模式的应用。所有涉及到与多个业务对象交互的场景都可以考虑使用外观模式进行重构。 主要优点(1) 它对客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。通过引入外观模式,客户端代码将变得很简单,与之关联的对象也很少。 (2) 它实现了子系统与客户端之间的松耦合关系,这使得子系统的变化不会影响到调用它的客户端,只需要调整外观类即可。 (3) 一个子系统的修改对其他子系统没有任何影响,而且子系统内部变化也不会影响到外观对象。 适用场景(1) 当要为访问一系列复杂的子系统提供一个简单入口时可以使用外观模式。 (2) 客户端程序与多个子系统之间存在很大的依赖性。引入外观类可以将子系统与客户端解耦,从而提高子系统的独立性和可移植性。 (3) 在层次化结构中,可以使用外观模式定义系统中每一层的入口,层与层之间不直接产生联系,而通过外观类建立联系,降低层之间的耦合度。
参考文档:
开发应用 - 策略模式(Strategy Pattern) 常用设计模式 设计模式 - 外观模式应用(Façade Pattern) GoF设计模式:单例模式(Singleton Pattern)—确保对象的唯一性-C/S开发框架 GoF设计模式:适配器模式(Adapter Pattern)—不兼容结构的协调-C/S开发框架 GoF设计模式:迭代器模式(Iterator Pattern)—遍历聚合对象中的元素 -C/S开发框架 GoF设计模式:组合模式(Composite Pattern)—树形结构的处理-C/S开发框架 GoF设计模式:建造者模式(Builder Pattern)—复杂对象的组装与创建-C/S开发框架 GoF设计模式:访问者模式(Visitor Pattern)—操作复杂对象结构-C/S开发框架 GoF设计模式:享元模式(Flyweight Pattern)—实现对象的复用-C/S开发框架 GoF设计模式:装饰模式(Decorator Pattern)—扩展系统功能-C/S开发框架 GoF设计模式:命令模式(Command Pattern)—请求发送者与接收者解耦-C/S开发框架 GoF设计模式:职责链模式(Chain of Responsibility Pattern)—请求的链式处理-C/S开发框架 GoF设计模式:桥接模式(Bridge Pattern)—处理多维度变化-C/S开发框架 GoF设计模式:代理模式(Proxy Pattern)—对象的间接访问-C/S开发框架 GoF设计模式:中介者模式(Mediator Pattern)—协调多个对象之间的交互-C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |