亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Golang構建整潔架構

發布時間:2021-08-30 17:33:21 來源:億速云 閱讀:142 作者:chen 欄目:開發技術

本篇內容介紹了“如何使用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 包為例:

如何使用Golang構建整潔架構

在 entity.go 文件中,我們有自己的實體 :

如何使用Golang構建整潔架構

在 repository.go 文件中我們定義存儲庫的接口,用于保存存儲實體。在這種情況下,存儲庫意味著 Uncle Bob  架構中的框架和驅動層。它的內容是:

如何使用Golang構建整潔架構

該接口可以在任何類型的存儲層中實現,如 MongoDBMySQL 等。在我們的例子中,我們使用 MongoDB 來實現,就像在 mongodb.go  中看到的那樣:

如何使用Golang構建整潔架構

service.go 文件表示 Uncle Bob 定義的用例層。在文件中,我們有 Service 接口和它的實現。Service 接口是:

如何使用Golang構建整潔架構

最后一層,我們架構中的 Controller 是在 api 的內容中實現的:

如何使用Golang構建整潔架構

在以下代碼中,從 api/main.go 中我們可以看看如何使用這些服務:

如何使用Golang構建整潔架構

現在我們可以輕松地創建包測試,比如:

如何使用Golang構建整潔架構

使用整潔的體系結構,我們可以將數據庫從 MongoDB 更改為 Neo4j  ,而不會破壞應用程序的其他部分。這樣,我們可以在不損失質量和速度的情況下開發我們的軟件。

“如何使用Golang構建整潔架構”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

栾城县| 镇江市| 佛山市| 广宁县| 阿拉尔市| 崇信县| 河津市| 永清县| 天祝| 潞城市| 新河县| 安岳县| 松江区| 旬邑县| 南康市| 共和县| 定远县| 宣威市| 邯郸市| 方正县| 马边| 三河市| 政和县| 镇雄县| 贺州市| 泰兴市| 屏山县| 沅江市| 贵阳市| 涿州市| 成安县| 邯郸县| 万安县| 龙门县| 清镇市| 昌平区| 边坝县| 双柏县| 白银市| 兴山县| 安徽省|