企業應用架構的基本模式之入口模式

coderidea發表於2018-12-23

本篇介紹企業應用架構的基本模式之一入口(Gateway)模式。

入口(Gateway)

入口是一個封裝外部系統或資源訪問的物件。帶來系統上的簡單性,可測試性,使得依賴資源的替換變得更加容易。

程式碼示例地址:https://github.com/tianyaxiang/ApplicationArchitecture

背景

當訪問外部資源時,通常要獲得它們的API,但這些API可能具有天然的複雜性,因為它們必須考慮到資源自身的特性。任何要理解一個資源就必須首先通曉基API——無論是對關聯式資料庫的JDBC,還是針對XML的W3C和JDOM,皆是如此。這使得軟體的可讀性差,修改變得困難,例如將來的某時將關聯式資料庫的一些資料轉移到XML,解決這一問題可以使用入口(Gateway)模式

做法

事實上這是一個十分簡單的包裝器(wrapper)模式。封裝外部資源,建立一個簡單的API並用入口將對該API的呼叫轉移到外部資源上。

使用場景

如果必須通過一個複雜的介面與可能位於系統之外的事務互動,應當考慮入口模式。使用入口將複雜性封裝起來,而不要讓複雜性蔓延到整個系統中,使用入口幾乎沒有什麼弊端,同時又可以使系統中入口類之外的程式碼可讀性更高。有以下的好處:

使系統更易測試。

使你用一種資源來替換另一種資源變得更為容易。

即使你認為資源不會發生任何變化,你仍然可以從使用入口模式所帶來的簡單性和可測試性中獲益。

入口模式與外觀模式(Facade)和介面卡(Adpter)以及中介者模式(Mediator)的區別

  • 外觀模式對較複雜的API進行簡化,其通常由服務的作者提供,而且是通過的。入口則是客戶方為了其特定應用而編寫的。此外,一個外觀通常暗示一個與原始介面不同的介面,但在入口可以只是簡單地照搬被包裝的介面,這種入口用於將來替換資源或測試目的。
  • 介面卡模式修改某一已經實現的介面,使其與另一個你所用到的介面相匹配。入口模式通常沒有一個已存在的介面,雖然你可能會使用一個介面卡來將一個實現對映到一個入口類的介面上。此時介面卡是入口類實現的一部分。
  • 中介者模式通過用來將多個物件解耦,使得它們無需互相引用,而只要與中介者發生關聯。入口模式通常只涉及兩個物件,而且被包裝的資源並不知道入口的存在。

 

本文首發於個人微信公眾號:webguan ;歡迎您的關注

相關文章