成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

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

[[278793]]

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

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

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

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

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

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

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

讓我們以 user 包為例:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

引用

  • https://hackernoon.com/golang-clean-archithecture-efd6d7c43047
  • https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html
責(zé)任編輯:華軒 來源: Go語言中文網(wǎng)
相關(guān)推薦

2023-12-25 09:49:01

Golang架構(gòu)Go-Kit

2025-03-26 03:20:00

2025-06-27 06:38:19

2022-09-14 09:27:49

CSS架構(gòu)代碼

2023-10-09 08:20:12

整潔架構(gòu)軟件設(shè)計原則

2022-04-18 09:41:14

Go架構(gòu)設(shè)計

2021-06-09 08:09:05

架構(gòu)軟件整潔

2022-08-25 11:38:38

GolangDockerfile

2023-08-17 10:12:04

前端整潔架構(gòu)

2021-12-24 09:00:43

Go語言進(jìn)程

2022-08-08 13:24:28

整潔架構(gòu)架構(gòu)前端

2023-03-13 07:40:44

高并發(fā)golang

2023-02-21 09:45:45

Golang應(yīng)用程序

2023-08-08 08:00:00

架構(gòu)Kafka

2012-08-01 09:38:17

代碼整潔

2025-02-20 08:21:36

2019-05-14 09:31:16

架構(gòu)整潔軟件編程范式

2021-09-06 13:15:16

golang chan技巧語言

2024-03-06 09:11:34

2021-03-19 07:23:23

Go架構(gòu)Go工程化
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚州毛片 | 亚洲精品大片 | 国产视频一区在线 | 欧美专区在线 | 免费观看日韩av | 国产午夜在线 | 日本不卡一区 | 黄网免费看 | 一二三区av | 日韩精品a在线观看图片 | 成人精品在线观看 | 欧美一区二区视频 | 欧美性猛片aaaaaaa做受 | 国产高清一区二区三区 | 亚洲国产中文字幕 | 精品国产18久久久久久二百 | 亚洲成人午夜在线 | 玖玖爱365 | 亚洲精品视频免费观看 | 日韩a在线观看 | 午夜激情在线 | 亚洲视频免费一区 | 久久精品高清视频 | 国产精品久久久久久久久久久久 | 久久精品视频在线观看 | 国产精品国产三级国产a | 久热9| 亚洲一区精品在线 | 中文字幕 亚洲一区 | 麻豆一区一区三区四区 | 欧美日韩国产传媒 | 国产真实乱对白精彩久久小说 | 国产污视频在线 | 亚洲一区二区三区国产 | 亚洲精品第一国产综合野 | 国产精品69毛片高清亚洲 | 久久久久无码国产精品一区 | 狠狠操网站 | 亚洲永久免费 | 天天躁人人躁人人躁狂躁 | 国产精品一区二区久久久久 |