这个是比较好理解的,拿我们的电脑做例子。电脑有cpu,内存,显卡等这些。当电脑开机时,主板、cpu、内存等都要启动。但作为用户并不需要管里面启动顺序之类的,我们只要按下开机键就行了。
public class Facade {
public static class Board {
public void start(){
System.out.println("board start!");
}
}
public static class CPU {
public void start(){
System.out.println("cpu start!");
}
}
public static class Memory {
public void start(){
System.out.println("memory start!");
}
}
public static class Computer {
private CPU cpu;
private Memory memory;
private Board board;
public Computer(){
board = new Board();
cpu = new CPU();
memory = new Memory();
}
public void start(){
System.out.println("start the computer!");
board.start();
cpu.start();
memory.start();
System.out.println("start computer finished!");
}
}
public static void main(String[] args) {
Computer computer = new Computer();
computer.start(); //我想关机大家自己也会写了
}
}
输出:
start the computer!
board startup!
cpu startup!
memory startup!
start computer finished!
很简单吧,但外观模式用的很多。外观模式是种封装,所以有很好的低耦合(改动cpu等不影响computer)。有人说不符合开闭原则,因为开闭原则扩展时不影响以前的。而现在扩展要更改外观类,我想说的是,无论用哪种方式。如果你增加了功能,客户端要用肯定得改客户端代码的。
其实开闭原则也好,高内聚低耦合也罢。都是为了更改代码时影响最小。