設計模式學習(十):門面模式
設計模式學習(十):門面模式
作者:Grey
原文地址:
門面模式
門面模式是一種結構型模式。
門面模式為子系統提供一組統一的介面,定義一組高層介面讓子系統更易用。
假設建造一個房子需要有如下三個步驟:
第一步,和泥
第二步,搬磚
第三步,砌牆
如果每次我們製造一個房子都要分別調用這三個方法,就會比較麻煩一些,我們可以設置一個門面,這個門面封裝了這三個步驟,後續建造房子,只需要調用這個門面即可。
和泥
public class Mason {
public void mix() {
System.out.println("我和好泥了!");
}
}
搬磚
public class BrickWorker {
public void carry() {
System.out.println("我搬好磚了!");
}
}
砌牆
public class BrickLayer {
public void neat() {
System.out.println("我砌好牆了!");
}
}
門面
public class LabourConstractor {
private Mason work1 = new Mason();
private BrickWorker work2 = new BrickWorker();
private BrickLayer work3 = new BrickLayer();
public void buildHouse() {
work1.mix();
work2.carry();
work3.neat();
}
}
這樣主函數只需要調用門面的 buildHourse() 方法,就可以建造一個房子了
public class Client {
public static void main(String[] args) {
LabourConstractor labour = new LabourConstractor();
labour.buildHouse();
}
}
門面模式的 UML 圖如下

門面模式應用
- Linux 的系統調用和 Shell 腳本
Linux 系統調用函數就可以看作一種「門面」。它是 Linux 作業系統暴露給開發者的一組「特殊」的編程介面,它封裝了底層更基礎的 Linux 內核調用。再比如, Linux 的 Shell 命令,實際上也可以看作一種門面模式的應用。它繼續封裝系統調用,提供更加友好、簡單的命令,讓我們可以直接通過執行命令來跟作業系統交互。
-
Spring JDBC 中的
JdbcUtils類,包裝了 JDBC 相關的所有操作。 -
Tomcat 中的
RequestFacade,ResponseFacade,StandardSessionFacade。

