客户端代码需要与多个子系统进行交互,通常完成一个功能需要一系列复杂的请求。此时,可以提供一个外观类简化客户端代码的请求。
外观模式为子系统提供不能的访问接口,并隐藏子系统的内部实现。
1. 模式UML图
2. 应用
一个网站系统中,SiteInfo类封装了网站的一般信息,VersionInfo类封装了网站的版本信息。
客户代码需要同时得到网站信息包括版本信息。根据实际情况,SiteInfo类和VersionInfo类可能提供很多各式各样的访问接口。而目前客户代码只需要取得少量信息,于是,为了避免让客户代码与SiteInfo类和VersionInfo类直接打交道。使用外观模式,提供一个SiteFacade。
SiteInfo.cs
VersionInfo.cs
SiteFacade.cs
Client
Output