您好,登錄后才能下訂單哦!
本篇內容介紹了“如何使用Golang構建整潔架構”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
什么是整潔架構?
在《Clean Architecture: A Craftsman’s Guide to Software Structure and Design》一書中,著名作家 Robert “Uncle Bob” Martin 提出了一種具有一些重要特性的體系結構,如框架、數據庫和接口的可測試性和獨立性。
整潔架構的約束條件是:
獨立的框架。該體系結構并不依賴于某些帶有特性的軟件庫的存在。這允許您使用這些框架作為工具,而不是將您的系統束縛在有限的約束中。
可測試的。業務規則可以在沒有 UI、數據庫、Web 服務器或任何其他外部元素的情況下進行測試。
獨立的 UI 。UI 可以很容易地更改,而不會改變系統的其他部分。例如,可以用控制臺 UI 替換 Web UI,而不需要更改業務規則。
獨立的數據庫。您可以將 Oracle 或 SQL Server 替換為 Mongo、BigTable、CouchDB 或其他數據庫。您的業務規則不綁定到數據庫。
獨立的任意外部代理。事實上,你的業務規則根本就不用了解外部的構成。
了解更多請查看 : https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html
因此,基于這些約束,每一層都必須是獨立的和可測試的。
從 Uncle Bob 的架構中,我們可以將代碼分成 4 層:
實體: 封裝企業范圍的業務規則。Go 中的實體是一組數據結構和函數。
用例: 這個層中的軟件包含應用程序特定的業務規則。它封裝并實現了系統的所有用例。
控制器: 該層中的軟件是一組適配器,它將數據從最方便的用例和實體轉換為最方便的外部代理,例如數據庫或 Web。
框架和驅動程序: 這個層通常由框架和工具(如數據庫、Web 框架等)組成。
使用 Golang 構建整潔架構
讓我們以 user 包為例:
在 entity.go 文件中,我們有自己的實體 :
在 repository.go 文件中我們定義存儲庫的接口,用于保存存儲實體。在這種情況下,存儲庫意味著 Uncle Bob 架構中的框架和驅動層。它的內容是:
該接口可以在任何類型的存儲層中實現,如 MongoDB、MySQL 等。在我們的例子中,我們使用 MongoDB 來實現,就像在 mongodb.go 中看到的那樣:
service.go 文件表示 Uncle Bob 定義的用例層。在文件中,我們有 Service 接口和它的實現。Service 接口是:
最后一層,我們架構中的 Controller 是在 api 的內容中實現的:
在以下代碼中,從 api/main.go 中我們可以看看如何使用這些服務:
現在我們可以輕松地創建包測試,比如:
使用整潔的體系結構,我們可以將數據庫從 MongoDB 更改為 Neo4j ,而不會破壞應用程序的其他部分。這樣,我們可以在不損失質量和速度的情況下開發我們的軟件。
“如何使用Golang構建整潔架構”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。