日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用Golang構(gòu)建整潔架構(gòu)

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

專注于為中小企業(yè)提供成都網(wǎng)站制作、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)華亭免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

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

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

  • 獨(dú)立的框架。該體系結(jié)構(gòu)并不依賴于某些帶有特性的軟件庫的存在。這允許您使用這些框架作為工具,而不是將您的系統(tǒng)束縛在有限的約束中。
  • 可測(cè)試的。業(yè)務(wù)規(guī)則可以在沒有 UI、數(shù)據(jù)庫、Web 服務(wù)器或任何其他外部元素的情況下進(jìn)行測(cè)試。
  • 獨(dú)立的 UI 。UI 可以很容易地更改,而不會(huì)改變系統(tǒng)的其他部分。例如,可以用控制臺(tái) UI 替換 Web UI,而不需要更改業(yè)務(wù)規(guī)則。
  • 獨(dú)立的數(shù)據(jù)庫。您可以將 Oracle 或 SQL Server 替換為 Mongo、BigTable、CouchDB 或其他數(shù)據(jù)庫。您的業(yè)務(wù)規(guī)則不綁定到數(shù)據(jù)庫。
  • 獨(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ù)庫或 Web。
  • 框架和驅(qū)動(dòng)程序: 這個(gè)層通常由框架和工具(如數(shù)據(jù)庫、Web 框架等)組成。

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

讓我們以 user 包為例:

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

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

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

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

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

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

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

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

引用

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

網(wǎng)站欄目:使用Golang構(gòu)建整潔架構(gòu)
文章網(wǎng)址:http://www.5511xx.com/article/cojdhhi.html