java与模式:门面模式

基本定义

  • 含义:外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行
  • 作用:门面模式的门面类将客户端与子系统的内部复杂性分隔,使得客户端只需要与门面对象打交道,而不需要与子系统内部的很多对象打交道
    核心特点:知道子角色的功能和责任,将客户端发来的请求委派给子系统,无业务逻辑,不参与子系统的业务逻辑
    一个形象的例子:
    医院无接待员的情况下病人看病时:
    java与模式:门面模式_第1张图片
    当医院改善增加了接待员,病人的看病体验:
    java与模式:门面模式_第2张图片

病人:客户端
接待员:门面角色,客户端调用这个角色,处理客户端的请求委派到相应子系统
缴费、挂号:子系统角色
示意图:
java与模式:门面模式_第3张图片

使用场景

为一个复杂子系统提供一个简单接口,使得子系统更具可复用性;
子系统的独立,将子系统与它的客户端以及其他的子系统分离;
层次化结构,构建一个层次化系统时使用facade模式定义每一层的入口,限定仅通过facade通信,解构层与层的依赖

例子

slf4j的官方文档解释如下 :

The Simple Logging Facade for Java (SLF4J) serves as a simple 
facade or abstraction for various logging frameworks, 
such as java.util.logging, logback and log4j.

slf4j并不是日志系统的具体实现,而是一个java日志标准。正如文档所说作为各种日志框架的门面或者抽象。

你可能感兴趣的:(设计模式)