# facade **Repository Path**: wangblue/facade ## Basic Information - **Project Name**: facade - **Description**: 外观者模式 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-05 - **Last Updated**: 2024-10-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 结构型模式——外观模式 ### 一、外观者模式简介 **外观模式(Facade Pattern)** 是一种结构型设计模式,它为子系统中的一组接口提供了一个统一的高层接口。外观模式定义了一个更为简单的接口,使得复杂的子系统更容易使用,隐藏了系统的复杂性。 ### 二、核心概念 外观模式的主要目的是为了简化客户端与复杂子系统之间的交互。客户端只需与一个单一的外观类交互,而无需直接与多个子系统的复杂组件打交道。 ### 三、结构 **外观(Facade)**:提供一个简单的接口来访问子系统中的功能,知道哪些子系统类负责处理请求。 **子系统(Subsystem)**:实现子系统的实际功能。每个子系统都可以独立运作,且不知道外观的存在,客户端可以直接访问它们。 ### 四、使用场景 **Java IO:**IO库中,InputStream、OutPutStream、Reader和Writer等,都可以看作是外观类,它们封装了底层的复杂的IO操作,提供了简单的接口。 **JDBC:**JDBC提供了一组统一的接口,用于访问和操作不同类型的数据库。DriverManager类,封装了底层的数据库连接细节,可以通过一个简单的接口就能操作不同的数据库。 **Spring框架:**很多功能都是通过外观模式来设计的。如,BeanFactory,封装了底层的IOC和Bean的创建过程,提供了简单的接口供开发者使用。 ### 五、场景案例 下面以旅行社为例,解释一下外观模式。 在旅行社中,我们可以将后台的一些复杂的子系统类,比如酒店、机票、门票预定等封装成一个旅行社预定服务,也就是外观类,最后提供一个简单的接口来处理客户端的请求。 #### 5.1、UML图形 ![](images\外观者模式.jpg) #### 5.2、代码 [facade: 外观者模式](https://gitee.com/wangblue/facade)