设计模式 -(6)外观模式(门面模式)(结构型)

门面类(Facade)

  1. 知道哪些子系统负责处理哪些请求
  2. 将客户的请求传递给相应的子系统对象进行处理

子系统类(SubSystem)

  1. 实现子系统的功能
  2. 处理由Facade传递过来的任务
  3. 子系统无需知道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); 
        }
    } 

客户端就不会发生改变
























posted @ 2016-09-23 15:50  【唐】三三  阅读(221)  评论(0编辑  收藏  举报