注:本文为译文,原文出处java-design-patterns-in-stories
对于Facade Pattern, 比较常见的翻译有”外观模式”, “门面模式”, “刻面模式”, 个人认为”门面模式”还是比较言简意赅的.
门面模式隐藏了任务的复杂性并提供了一个简单的接口. 典型的例子就是计算机的启动. 当计算机启动时, 参与工作的包括:CPU, 内存, 硬件驱动等等. 为了简化用户的使用, 我们可以添加了一个门面, 它隐藏了整个任务的复杂程度并且提供了一个简单的接口加以替代.
//the components of a computer
class CPU {
public void processData() { }
}
class Memory {
public void load() { }
}
class HardDrive {
public void readdata() { }
}
/* Facade */
class Computer {
private CPU cpu;
private Memory memory;
private HardDrive hardDrive;
public Computer() {
this.cpu = new CPU();
this.memory = new Memory();
this.hardDrive = new HardDrive();
}
public void run() {
cpu.processData();
memory.load();
hardDrive.readdata();
}
}
class User {
public static void main(String[] args) {
Computer computer = new Computer();
computer.run();
}
}
javax.faces.context包内, ExternalContext内部使用了ServletContext, HttpSession, HttpServletRequest, HttpServletResponse等类. 它令Faces API对于其包含应用环境属性一无所知.
基于门面模式的例子来自于维基, 因此本文也归功于维基.
参考: