日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

使用 Golang 構(gòu)建整潔架構(gòu)

 

什么是整潔架構(gòu)?

在《Clean Architecture: A Craftsman’s Guide to Software Structure and Design》一書中,著名作家 Robert “Uncle Bob” Martin 提出了一種具有一些重要特性的體系結(jié)構(gòu),如框架、數(shù)據(jù)庫(kù)和接口的可測(cè)試性和獨(dú)立性。

整潔架構(gòu)的約束條件是:

  • 獨(dú)立的框架。該體系結(jié)構(gòu)并不依賴于某些帶有特性的軟件庫(kù)的存在。這允許您使用這些框架作為工具,而不是將您的系統(tǒng)束縛在有限的約束中。
  • 可測(cè)試的。業(yè)務(wù)規(guī)則可以在沒(méi)有 UI、數(shù)據(jù)庫(kù)、Web 服務(wù)器或任何其他外部元素的情況下進(jìn)行測(cè)試。
  • 獨(dú)立的 UI 。UI 可以很容易地更改,而不會(huì)改變系統(tǒng)的其他部分。例如,可以用控制臺(tái) UI 替換 Web UI,而不需要更改業(yè)務(wù)規(guī)則。
  • 獨(dú)立的數(shù)據(jù)庫(kù)。您可以將 Oracle 或 SQL Server 替換為 Mongo、BigTable、CouchDB 或其他數(shù)據(jù)庫(kù)。您的業(yè)務(wù)規(guī)則不綁定到數(shù)據(jù)庫(kù)。
  • 獨(dú)立的任意外部代理。事實(shí)上,你的業(yè)務(wù)規(guī)則根本就不用了解外部的構(gòu)成。

了解更多請(qǐng)查看 : https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html

因此,基于這些約束,每一層都必須是獨(dú)立的和可測(cè)試的。

從 Uncle Bob 的架構(gòu)中,我們可以將代碼分成 4 層:

  • 實(shí)體: 封裝企業(yè)范圍的業(yè)務(wù)規(guī)則。Go 中的實(shí)體是一組數(shù)據(jù)結(jié)構(gòu)和函數(shù)。
  • 用例: 這個(gè)層中的軟件包含應(yīng)用程序特定的業(yè)務(wù)規(guī)則。它封裝并實(shí)現(xiàn)了系統(tǒng)的所有用例。
  • 控制器: 該層中的軟件是一組適配器,它將數(shù)據(jù)從最方便的用例和實(shí)體轉(zhuǎn)換為最方便的外部代理,例如數(shù)據(jù)庫(kù)或 Web。
  • 框架和驅(qū)動(dòng)程序: 這個(gè)層通常由框架和工具(如數(shù)據(jù)庫(kù)、Web 框架等)組成。

使用 Golang 構(gòu)建整潔架構(gòu)

讓我們以 user 包為例:

使用 Golang 構(gòu)建整潔架構(gòu)

 

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

使用 Golang 構(gòu)建整潔架構(gòu)

 

在 repository.go 文件中我們定義存儲(chǔ)庫(kù)的接口,用于保存存儲(chǔ)實(shí)體。在這種情況下,存儲(chǔ)庫(kù)意味著 Uncle Bob 架構(gòu)中的框架和驅(qū)動(dòng)層。它的內(nèi)容是:

使用 Golang 構(gòu)建整潔架構(gòu)

 

該接口可以在任何類型的存儲(chǔ)層中實(shí)現(xiàn),如 MongoDB、MySQL 等。在我們的例子中,我們使用 MongoDB 來(lái)實(shí)現(xiàn),就像在 mongodb.go 中看到的那樣:

使用 Golang 構(gòu)建整潔架構(gòu)

 

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

使用 Golang 構(gòu)建整潔架構(gòu)

 

最后一層,我們架構(gòu)中的 Controller 是在 api 的內(nèi)容中實(shí)現(xiàn)的:

使用 Golang 構(gòu)建整潔架構(gòu)

 

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

使用 Golang 構(gòu)建整潔架構(gòu)

 

現(xiàn)在我們可以輕松地創(chuàng)建包測(cè)試,比如:

使用 Golang 構(gòu)建整潔架構(gòu)

 

使用整潔的體系結(jié)構(gòu),我們可以將數(shù)據(jù)庫(kù)從 MongoDB 更改為 Neo4j ,而不會(huì)破壞應(yīng)用程序的其他部分。這樣,我們可以在不損失質(zhì)量和速度的情況下開(kāi)發(fā)我們的軟件。

引用

  • 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 校對(duì):polaris1119

本文由 GCTT 原創(chuàng)編譯,Go語(yǔ)言中文網(wǎng) 榮譽(yù)推出

分享到:
標(biāo)簽:Golang
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定