外观模式(facade)
概念:
外观模式就是将类与类之间的关系放在一个Facade类中,降低了类类之间的耦合度。
优点:
类与类之间的关系放在一个Facade类中,起到了解耦的作用
适用:
1.客户端程序与抽象类的实现部分存在着很大的依赖性。引入Facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。
2.当你需要构建一个层次结构的子系统时,使用Facade模式定义子系统的每层的入口点。如果子系统之间是相互依赖的,你可以让他们仅通过facade进行通讯,从而简化了他们之间的依赖关系。
示例代码:
/**
* 相当于SubsystemOne
*/
public class CPU {
public void startup(){
System.out.println("cpu startup!");
}
public void shutdown(){
System.out.println("cpu shutdown!");
}
}
/**
* 相当于SubsystemTwo
*/
public class Disk {
public void startup(){
System.out.println("disk startup!");
}
public void shutdown(){
System.out.println("disk shutdown!");
}
}
/**
* 相当于SubsystemThree
*/
public class Memory {
public void startup(){
System.out.println("memory startup!");
}
public void shutdown(){
System.out.println("memory shutdown!");
}
}
/**
* 相当于Facade
*/
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!");
}
}
/**
* 外观模式的测试
* 外观模式就是将多个类的关系放在一个Facade类中,降低了类类之间的耦合度
*/
public class Test {
public static void main(String[] args) {
Computer computer = new Computer();
computer.startup();
computer.shutdown();
}
}