外观模式(facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
外观模式结构图
package com.facade;
public class Cpu {
public void startup() {
System.out.println("cpu startup!");
}
public void shutdown() {
System.out.println("cpu shutdown!");
}
}
package com.facade;
public class Disk {
public void startup(){
System.out.println("disk startup!");
}
public void shutdown(){
System.out.println("disk shutdown!");
}
}
package com.facade;
public class Memory {
public void startup(){
System.out.println("memory startup!");
}
public void shutdown(){
System.out.println("memory shutdown!");
}
}
package com.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!");
}
}
package com.facade;
/**
* ClassName: Main
* @Description:外观模式(Facade):
外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,
而外观模式就是将他们的关系放在一个Facade类(本demo中是Computer类)中,降低了类类之间的耦合度,该模式中没有涉及到接口。
(我们以一个计算机的启动过程为例)
* @author Panyk
* @date 2015年10月13日
*/
public class Main {
public static void main(String[] args) {
Computer c = new Computer();
c.startup();
System.out.println("--------------");
c.shutdown();
}
}