门面类(Facade)
- 知道哪些子系统负责处理哪些请求
- 将客户的请求传递给相应的子系统对象进行处理
子系统类(SubSystem)
- 实现子系统的功能
- 处理由Facade传递过来的任务
- 子系统无需知道Facade的存在,在任何地方都没有引用Facede
UML
![](https://images2015.cnblogs.com/blog/196558/201610/196558-20161022031338388-45728217.png)
时序图
![](https://images2015.cnblogs.com/blog/196558/201610/196558-20161022031338732-1378352306.png)
例子:
给定一个学生类,有年龄和性别属性,判断年龄大于18岁,并且为男性(M)的为合法,其他都不合法。
不使用门面模式
![](https://images2015.cnblogs.com/blog/196558/201610/196558-20161022031339201-359735346.png)
使用门面模式
添加Facade类
class Facade
{
public bool IsValid(Student student)
{
SubSystem1 sub1 = new SubSystem1();
SubSystem2 sub2 = new SubSystem2();
return sub1.IsAgeValid(student) && sub2.IsSexValid(student);
}
}
![](https://images2015.cnblogs.com/blog/196558/201610/196558-20161022031339467-1896273852.png)
客户端就不会发生改变