亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

使用 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 構建整潔架構

 

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

使用 Golang 構建整潔架構

 

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

使用 Golang 構建整潔架構

 

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

使用 Golang 構建整潔架構

 

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

使用 Golang 構建整潔架構

 

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

使用 Golang 構建整潔架構

 

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

引用

  • https://hackernoon.com/golang-clean-archithecture-efd6d7c43047
  • https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html

via: https://medium.com/@eminetto/clean-architecture-using-golang-b63587aa5e3f

作者:Elton Minetto 譯者:SergeyChang 校對:polaris1119

本文由 GCTT 原創編譯,Go語言中文網 榮譽推出

分享到:
標簽:Golang
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定