一、概述
1、定义
外观模式,一般用在子系统与访问之间,用于对访问屏蔽复杂的子系统调用,采用耳目一新的外观类提供的简单的调用方法,具体的实现由外观类去子系统调用。外观模式也叫门面模式。
2、角色
2-1、子系统角色:在软件系统中可以有一个或者多个子系统角色,每一个子系统可以不是一个单独的类,而是一个类的集合,它实现子系统的功能;每一个子系统都可以被客户端直接调用,或者被外观角色调用,它处理由外观类传过来的请求;子系统并不知道外观的存在,对于子系统而言,外观角色仅仅是另外一个客户端而已。
2-2、外观类:在客户端可以调用它的方法,在外观角色中可以知道相关的(一个或者多个)子系统的功能和责任;在正常情况下,它将所有从客户端发来的请求委派到相应的子系统去,传递给相应的子系统对象处理。
二、代码
子系统ABC及其方法
public class SubSystemA {
public void MethodA()
{
//业务实现代码
}
}
public class SubSystemB {
public void MethodB()
{
//业务实现代码
}
}
public class SubSystemC {
public void MethodC()
{
//业务实现代码
}
}
外观类
public class Facade {
private SubSystemA obj1 = new SubSystemA();
private SubSystemB obj2 = new SubSystemB();
private SubSystemC obj3 = new SubSystemC();
public void Method() {
obj1.MethodA();
obj2.MethodB();
obj3.MethodC();
}
}
测试类
public class Program {
static void Main(string[] args)
{
Facade facade = new Facade();
facade.Method();
}
}
三、适用场景
1、当我们访问的子系统拥有复杂额结构,内部调用繁杂,初接触者根本无从下手时,可以为这个子系统设计一个外观类来供访问者使用,统一访问路径(集中到外观类中),将繁杂的调用结合起来形成一个总调用写到外观类中,之后访问者不用再繁杂的方法中寻找需要的方法进行调用,直接在外观类中找对应的方法进行调用即可。
2、在系统与系统之间发生调用时,也可以为被调用子系统设计外观类,这样方便调用,也屏蔽了系统的复杂性。
转载自:http://www.cnblogs.com/V1haoge/p/6484128.html