一. 定义
为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
二. 模式结构
1. Facade(外观角色)
在客户端可以调用这个角色的方法,在外观角色中可以知道相关的子系统的功能和责任;在正常情况下,他将所有从客户端发来的请求委派到相应的子系统去,传给相应的子系统对象处理。
2. SubSystem(子系统角色)
在软件系统中可以同时有多个子系统角色,每个子系统可以是一个类的集合,它实现子系统的功能;每一个子系统都可以被客户端直接调用,或者被外观角色调用,它处理由外观类传来的请求;子系统不知道外观的存在,对于子系统而言,外观仅仅是另外一个客户端而已。
三. 实例
1. GeneralSwitchFacade
public class GeneralSwitchFacade {
private Light light;
private Fan fan;
public GeneralSwitchFacade() {
light=new Light();
fan=new Fan();
}
public void on() {
light.on();
fan.on();
}
public void off() {
light.off();
fan.off();
}
}
2. Light
public class Light {
public Light() {
}
public void on() {
System.out.println("灯打开");
}
public void off() {
System.out.println("灯关闭");
}
}
3. Fan
public class Fan {
public void on() {
System.out.println("风扇打开");
}
public void off() {
System.out.println("风扇关闭");
}
}
4. Client
public class Client
{
public static void main(String[] args) throws Exception
{
GeneralSwitchFacade gs=new GeneralSwitchFacade();
gs.on();
gs.off();
}
}