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

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

入口(Gateway)github

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

代碼示例地址:https://github.com/tianyaxiang/ApplicationArchitecture數據庫

背景微信

當訪問外部資源時,一般要得到它們的API,但這些API可能具備自然的複雜性,由於它們必須考慮到資源自身的特性。任何要理解一個資源就必須首先通曉基API——不管是對關係數據庫的JDBC,仍是針對XML的W3C和JDOM,皆是如此。這使得軟件的可讀性差,修改變得困難,例如未來的某時將關係數據庫的一些數據轉移到XML,解決這一問題可使用入口(Gateway)模式架構

作法app

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

使用場景spa

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

使系統更易測試。

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

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

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

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

 

本文首發於我的微信公衆號:webguan ;歡迎您的關注

相關文章
相關標籤/搜索