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

使用 Golang 構建整潔架構

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

 什么是整潔架構?

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

[[278793]]

整潔架構的約束條件是:

  • 獨立的框架。該體系結構并不依賴于某些帶有特性的軟件庫的存在。這允許您使用這些框架作為工具,而不是將您的系統束縛在有限的約束中。
  • 可測試的。業務規則可以在沒有 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
責任編輯:華軒 來源: Go語言中文網
相關推薦

2023-12-25 09:49:01

Golang架構Go-Kit

2025-03-26 03:20:00

2022-09-14 09:27:49

CSS架構代碼

2023-10-09 08:20:12

整潔架構軟件設計原則

2022-04-18 09:41:14

Go架構設計

2021-06-09 08:09:05

架構軟件整潔

2022-08-25 11:38:38

GolangDockerfile

2023-08-17 10:12:04

前端整潔架構

2021-12-24 09:00:43

Go語言進程

2023-03-13 07:40:44

高并發golang

2022-08-08 13:24:28

整潔架構架構前端

2023-02-21 09:45:45

Golang應用程序

2025-02-20 08:21:36

2023-08-08 08:00:00

架構Kafka

2012-08-01 09:38:17

代碼整潔

2019-05-14 09:31:16

架構整潔軟件編程范式

2021-03-19 07:23:23

Go架構Go工程化

2024-03-06 09:11:34

2021-09-06 13:15:16

golang chan技巧語言

2021-08-23 08:30:30

Docker BuildKit 架構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 香蕉超碰 | 久久av网站 | 国产96在线 | 99精品视频网 | 欧美精品综合在线 | 亚洲人成人一区二区在线观看 | 国产日韩欧美在线观看 | 九九热免费看 | 精品1区2区 | 欧美成年网站 | 中文字幕一区二区三区不卡 | 亚洲一区不卡 | 久久亚洲综合 | 精品三级在线观看 | 欧美一区二区 | 国产精品99久久久久久宅男 | 日韩精品 电影一区 亚洲 | 视频1区2区 | 一区二区三区四区日韩 | 九九国产 | 影音先锋男 | 亚洲精品一区二区三区蜜桃久 | 精品99久久久久久 | 久国产| 国产精品69久久久久水密桃 | 在线观看日韩av | 九九热精品视频在线观看 | 日本污视频 | 久久er精品 | 国产精品日日摸夜夜添夜夜av | 欧美视频免费在线 | 午夜精品视频在线观看 | 亚洲成人三区 | 成人免费观看视频 | 亚洲伊人a | 亚洲精品视频在线播放 | 在线成人精品视频 | 黄片毛片 | 国产精品国产三级国产aⅴ无密码 | 成人精品啪啪欧美成 | 欧美性久久 |