VS 2008

客户端代码需要与多个子系统进行交互,通常完成一个功能需要一系列复杂的请求。此时,可以提供一个外观类简化客户端代码的请求。
外观模式为子系统提供不能的访问接口,并隐藏子系统的内部实现。

1. 模式UML图

Core Design Patterns(7) Facade 外观模式

2. 应用

    一个网站系统中,SiteInfo类封装了网站的一般信息,VersionInfo类封装了网站的版本信息。
    客户代码需要同时得到网站信息包括版本信息。根据实际情况,SiteInfo类和VersionInfo类可能提供很多各式各样的访问接口。而目前客户代码只需要取得少量信息,于是,为了避免让客户代码与SiteInfo类和VersionInfo类直接打交道。使用外观模式,提供一个SiteFacade。

Core Design Patterns(7) Facade 外观模式

SiteInfo.cs

Core Design Patterns(7) Facade 外观模式using System;
Core Design Patterns(7) Facade 外观模式
using System.Collections.Generic;
Core Design Patterns(7) Facade 外观模式
using System.Linq;
Core Design Patterns(7) Facade 外观模式
using System.Text;
Core Design Patterns(7) Facade 外观模式

VersionInfo.cs

Core Design Patterns(7) Facade 外观模式using System;
Core Design Patterns(7) Facade 外观模式
using System.Collections.Generic;
Core Design Patterns(7) Facade 外观模式
using System.Linq;
Core Design Patterns(7) Facade 外观模式
using System.Text;
Core Design Patterns(7) Facade 外观模式

SiteFacade.cs

Core Design Patterns(7) Facade 外观模式using System;
Core Design Patterns(7) Facade 外观模式
using System.Collections.Generic;
Core Design Patterns(7) Facade 外观模式
using System.Linq;
Core Design Patterns(7) Facade 外观模式
using System.Text;
Core Design Patterns(7) Facade 外观模式

Client

Core Design Patterns(7) Facade 外观模式using System;
Core Design Patterns(7) Facade 外观模式
using System.Collections.Generic;
Core Design Patterns(7) Facade 外观模式
using System.Linq;
Core Design Patterns(7) Facade 外观模式
using System.Text;
Core Design Patterns(7) Facade 外观模式
using DesignPattern.Facade.BLL;
Core Design Patterns(7) Facade 外观模式

Output

Core Design Patterns(7) Facade 外观模式

相关文章: