本篇介紹企業應用架構的基本模式之一入口(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)的區別
本文首發於我的微信公衆號:webguan ;歡迎您的關注