1.定义
外观模式为一组子系统的接口提供了一个一致的界面,定义了一个高层的接口,使得子系统更加易用;可以理解为定义了一个类,调用子系统或者很多类的功能来完成特定的功能,外观模式不涉及接口;
2.角色
1>外观角色
客户端可以调用外观角色的方法,这个角色知道子系统的所有的功能,再正常情况下,外观角色将客户端的请求转发到对应子系统去行使对应的功能;
2>子系统角色
可以有一个或者多个子系统,每个子系统可以直接被客户端调用,也可以被外观角色调用;子系统并不知道外观角色的存在,对它而言,外观角色只是一个客户端而已;
架构图如下
3.Demo
1>外观角色
public class Computer {
private CPU cpu;
private Memory memory;
private Disk disk;
public Computer() {
cpu = new CPU();
memory = new Memory();
disk = new Disk();
}
public void startup() {
System.out.println("start the computer!");
cpu.startup();
memory.startup();
disk.startup();
System.out.println("start computer finished!");
}
public void shutdown() {
System.out.println("begin to close the computer!");
cpu.shutdown();
memory.shutdown();
disk.shutdown();
System.out.println("computer closed!");
}
}
2>子系统
public class CPU {
public void startup() {
System.out.println("cpu startup!");
}
public void shutdown(){
System.out.println("cpu shutdown!");
}
}
public class Disk {
public void startup() {
System.out.println("disk startup!");
}
public void shutdown() {
System.out.println("disk shutdown!");
}
}
public class Memory {
public void startup() {
System.out.println("memory startup!");
}
public void shutdown() {
System.out.println("memory shutdown!");
}
}