门面类(Facade)
- 知道哪些子系统负责处理哪些请求
- 将客户的请求传递给相应的子系统对象进行处理
子系统类(SubSystem)
- 实现子系统的功能
- 处理由Facade传递过来的任务
- 子系统无需知道Facade的存在,在任何地方都没有引用Facede
UML

时序图

例子:
给定一个学生类,有年龄和性别属性,判断年龄大于18岁,并且为男性(M)的为合法,其他都不合法。
不使用门面模式

使用门面模式
添加Facade类
class Facade
{
public bool IsValid(Student student)
{
SubSystem1 sub1 = new SubSystem1();
SubSystem2 sub2 = new SubSystem2();
return sub1.IsAgeValid(student) && sub2.IsSexValid(student);
}
}

客户端就不会发生改变