設計模式學習(十):門面模式

設計模式學習(十):門面模式

作者:Grey

原文地址:

部落格園:設計模式學習(十):門面模式

CSDN:設計模式學習(十):門面模式

門面模式

門面模式是一種結構型模式。

門面模式為子系統提供一組統一的介面,定義一組高層介面讓子系統更易用。

假設建造一個房子需要有如下三個步驟:

第一步,和泥

第二步,搬磚

第三步,砌牆

如果每次我們製造一個房子都要分別調用這三個方法,就會比較麻煩一些,我們可以設置一個門面,這個門面封裝了這三個步驟,後續建造房子,只需要調用這個門面即可。

和泥

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 圖如下

image

門面模式應用

  • Linux 的系統調用和 Shell 腳本

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

  • Spring JDBC 中的 JdbcUtils類,包裝了 JDBC 相關的所有操作。

  • Tomcat 中的 RequestFacade, ResponseFacade, StandardSessionFacade。

UML 和 程式碼

UML 圖

程式碼

更多

設計模式學習專欄

參考資料