AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

聊聊六邊形架構,對代碼的編寫有很好的指導作用

來源: 責編: 時間:2023-11-01 09:19:06 327觀看
導讀指導我們寫出漂亮代碼有一種方式是學習設計模式,自從 Gof 四人組的《設計模式》出版后,各類設計模式的書層出不窮。熟讀這類書籍,對面試肯定是有幫助的,但代碼能力是否有大的長進就不一定了,如果沒能理解背后的思想,去生搬

ukW28資訊網——每日最新資訊28at.com

指導我們寫出漂亮代碼有一種方式是學習設計模式,自從 Gof 四人組的《設計模式》出版后,各類設計模式的書層出不窮。熟讀這類書籍,對面試肯定是有幫助的,但代碼能力是否有大的長進就不一定了,如果沒能理解背后的思想,去生搬硬套,只會起反作用。ukW28資訊網——每日最新資訊28at.com

背后的思想就是指面向對象的原則:ukW28資訊網——每日最新資訊28at.com

  • 單一職責原則(SRP)
  • 開放封閉原則(OCP)
  • 里氏替換原則(LSP)
  • 接口隔離原則(ISP)
  • 依賴倒置原則(DIP)

這些原則就是告訴我們應該怎么合理地組織類和方法。最終使我們開發的程序能夠滿足:可擴展、可復用、可閱讀。只是看這些原則比較抽象,最近又看了下六邊形架構,我認為對代碼的編寫有很好的指導作用,下面就聊聊六邊形架構。ukW28資訊網——每日最新資訊28at.com

什么是六邊形架構?

六邊形架構(Hexagonal Architecture),也被稱為端口與適配器架構(Ports and Adapters Architecture),是一種軟件架構模式,旨在實現高內聚、低耦合和可測試性的應用程序設計。該架構由 Alistair Cockburn 發明,他是敏捷宣言的簽署者之一。ukW28資訊網——每日最新資訊28at.com

ukW28資訊網——每日最新資訊28at.com

從上圖可以看出有內外兩層六邊形,深藍色和淺藍色。ukW28資訊網——每日最新資訊28at.com

  • 內層(深藍色):負責領域內的業務邏輯,相對獨立,不用關注任何外部依賴或技術細節,也不用關心外部的客戶端和服務,我們定義為領域層。
  • 外層(淺藍色):負責獲取不同的業務域的數據,進行業務邏輯的組裝,并與外界進行交互,我們定義為應用層。

上圖中的紫色部分的 context 是我們在實踐過程中添加的,在應用層中進行邏輯組裝時,如果沒有業務上下文的概念,會導致很多方法被重復調用,所以在業務入口會進行上下文的初始化,將上下文貫穿整個調用鏈。ukW28資訊網——每日最新資訊28at.com

端口和適配器

六邊形架構也被稱為端口與適配器架構,端口和適配器是兩個非常關鍵且重要的概念。ukW28資訊網——每日最新資訊28at.com

端口

端口是應用程序定義的接口,必須由外界實現,以便應用程序可以接收或發送信息,進行解耦。這個接口是廣義的,不光是指 Interface,WebAPI 接口,一些類的公共方法也屬于接口的范疇。ukW28資訊網——每日最新資訊28at.com

端口有分為兩種:ukW28資訊網——每日最新資訊28at.com

  • 入站端口:業務服務對外暴露的公有方法。
  • 出站端口:出站端口只一組方法的接口定義,提供一種規范,供出站適配器來實現。

使用端口和適配器進行處理應用程序的輸入和輸出,端口只是一種抽象,是應用程序在不了解任何內容的情況下與外界交互的一種方式。ukW28資訊網——每日最新資訊28at.com

例如:如果想要進行數據庫的讀取和寫入,不是直接操作數據庫,而是在接口中定義讀取和寫入的方法。應用程序不需要知道數據來自哪里,需要寫到什么地方去,可能是數據庫,也可能是文件系統或緩存,甚至會同時進行操作。ukW28資訊網——每日最新資訊28at.com

適配器

適配器是連接應用程序核心和外部接口的橋梁。它負責將外部請求轉換為應用程序核心可以理解的格式,并將核心的響應轉換為外部接口可以接受的格式。ukW28資訊網——每日最新資訊28at.com

適配器也分為兩種:ukW28資訊網——每日最新資訊28at.com

  • 入站適配器:通常就是對外的 RestAPI,通過調用入站端口來處理外部的請求,也可以是消息隊列的消費者,進行一些事件的監聽,來處理異步業務,當接收到消息時也是調用入站端口來進行處理。
  • 出站適配器:出站適配器實現出站接口,調用外部的服務來實現一個完整的業務邏輯,出站適配器也可以是消息隊列的生產者。

當要將數據保存到數據庫中時,適配器從接口定義的數據格式中獲取數據,并將其轉換為可以寫入數據庫的內容,重要的是,無論在適配器中怎么變化,核心域和接口不會發生變化。這就非常有用,將應用程序的核心邏輯和外部存儲隔離開了。ukW28資訊網——每日最新資訊28at.com

正是由于端口和適配器的存在,程序變得穩定和容易變化。ukW28資訊網——每日最新資訊28at.com

為什么叫六邊形架構?

為什么叫六邊形架構?而不是三角形、圓形、正方形呢?ukW28資訊網——每日最新資訊28at.com

目前沒有明確的理由說明為什么是六邊形,而不是其他的形狀。或許只是因為六邊形比較好看。又或許,一個小的六邊形代表這一個模塊,一個系統有很多這種模塊組成,模塊之間有輸入輸出的交互,就像蜂窩一樣。ukW28資訊網——每日最新資訊28at.com

而蜂窩正好是六邊形的。ukW28資訊網——每日最新資訊28at.com

六邊形架構的特點

通過六邊形架構,應用程序核心成為了架構的中心,具有清晰的邊界和職責,可以獨立于外部接口進行測試和演進。外部接口和適配器負責處理與外部系統的交互,使應用程序核心保持獨立和可復用。主要有以下特點:ukW28資訊網——每日最新資訊28at.com

  • 高內聚和低耦合:應用程序核心獨立于外部依賴,使得不同部分的修改不會對其他部分產生影響,提高了代碼的可維護性。
  • 可測試性:應用程序核心可以輕松地進行單元測試,因為它不依賴于具體的外部接口或技術細節。
  • 可擴展性:通過添加新的適配器,可以很容易地與新的外部系統進行集成,而不會對應用程序核心產生影響。

六邊形架構的原則

當我們談論六邊形架構時,會涉及到幾個核心原則。這些原則指導我們持續優化軟件架構,使系統保持其整體的穩定性。ukW28資訊網——每日最新資訊28at.com

  • 分離關注點:六邊形架構將系統劃分為不同的層次,每個層次都有其特定的職責和關注點。這種分離使得每個組件可以專注于自身的任務,降低了耦合性,提高了模塊的可復用性和可測試性。
  • 內外部分離:六邊形架構將系統劃分為內部和外部兩個六邊形,分別代表核心業務邏輯和外部接口。內部六邊形負責處理核心業務邏輯,而外部六邊形則負責處理業務整合和外部系統的交互。這種內外部分離的設計使得系統更容易擴展和適應變化。
  • 依賴注入:六邊形架構鼓勵使用依賴注入來管理組件之間的依賴關系。通過依賴注入,組件的依賴關系可以在運行時進行配置,而不是在編譯時固定。這樣可以實現組件之間的松耦合,并且方便進行替換和測試。
  • 接口驅動:六邊形架構強調基于接口編程,通過定義清晰的接口和協議來促進組件之間的通信。接口的使用讓各層之間解耦,又便于擴展。
  • 測試驅動:六邊形架構鼓勵在開發過程中采用測試驅動開發(TDD)的方法。通過編寫測試用例來定義組件的行為,然后逐步實現和改進組件以滿足測試的要求。這種測試驅動的開發方法有助于保證系統的質量和穩定性。

根據這些原則,可以發現,這些就是在文章開頭提到的那些面向對象的原則,通過六邊形架構的包裝后,更具備實操性。ukW28資訊網——每日最新資訊28at.com

和 DDD 、微服務的關系

在網上查六邊形架構的資料,六邊形架構往往都跟 DDD 、微服務在一起被提及,但他們之間其實沒有很必然的聯系。ukW28資訊網——每日最新資訊28at.com

就像微服務和 DDD 一樣,也沒有必然聯系,因為:ukW28資訊網——每日最新資訊28at.com

  • DDD 中子域和限界上下文的概念可以對應到微服務中的服務。
  • 微服務中一個服務可以由一個團隊進行開發,DDD 的一個領域模型也是建議由一個獨立的團隊負責。

所以,微服務和領域驅動開發(DDD)常常會一起提及,在學習的時候,也會兩種一起學,互相配合能夠更好地落地。ukW28資訊網——每日最新資訊28at.com

如果說,微服務是架構風格、DDD 是架構設計方法、那么六邊形架構就是一種具體的指導編碼的架構實踐。ukW28資訊網——每日最新資訊28at.com

一些資料

VS 的 HexagonalX 擴展。ukW28資訊網——每日最新資訊28at.com

在 VS 中可以安裝六邊形架構的擴展,安裝后在創建項目時就會多出六邊形架構的項目類型可供選擇。ukW28資訊網——每日最新資訊28at.com

ukW28資訊網——每日最新資訊28at.com

ukW28資訊網——每日最新資訊28at.com

幾個 GitHub 上的示例項目和文章:ukW28資訊網——每日最新資訊28at.com

https://github.com/alesimoes/hexagonal-clean-architecture。ukW28資訊網——每日最新資訊28at.com

https://github.com/ivanpaulovich/clean-architecture-manga。ukW28資訊網——每日最新資訊28at.com

https://blog.allegro.tech/2020/05/hexagonal-architecture-by-example.html。ukW28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-16289-0.html聊聊六邊形架構,對代碼的編寫有很好的指導作用

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 轉轉Flutter實踐之路

下一篇: JDK19虛線程探究

標簽:
  • 熱門焦點
  • 7月安卓手機性能榜:紅魔8S Pro再奪榜首

    7月份的手機市場風平浪靜,除了紅魔和努比亞帶來了兩款搭載驍龍8Gen2領先版處理器的新機之外,別的也想不到有什么新品了,這也正常,通常6月7月都是手機廠商修整的時間,進入8月份之
  • 三言兩語說透設計模式的藝術-簡單工廠模式

    一、寫在前面工廠模式是最常見的一種創建型設計模式,通常說的工廠模式指的是工廠方法模式,是使用頻率最高的工廠模式。簡單工廠模式又稱為靜態工廠方法模式,不屬于GoF 23種設計
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機制進行協調和交互,例如,線程等待和通知機制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實現手段有以下幾種方式:Object 類下
  • 一文看懂為蘋果Vision Pro開發應用程序

    譯者 | 布加迪審校 | 重樓蘋果的Vision Pro是一款混合現實(MR)頭戴設備。Vision Pro結合了虛擬現實(VR)和增強現實(AR)的沉浸感。其高分辨率顯示屏、先進的傳感器和強大的處理能力
  • 自動化在DevOps中的力量:簡化軟件開發和交付

    自動化在DevOps中扮演著重要角色,它提升了DevOps的效能。通過自動化工具和方法,DevOps團隊可以實現以下目標:消除手動和重復性任務。簡化流程。在整個軟件開發生命周期中實現更
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生
  • 品牌洞察丨服務本地,美團直播成效幾何?

    來源:17PR7月11日,美團App首頁推薦位出現“美團直播”的固定入口。在直播聚合頁面,外賣“神槍手”直播間、美團旅行直播間、美團買菜直播間等均已上線,同時
  • iQOO 11S屏幕細節公布:首發三星2K E6全感屏 安卓最好的直屏手機

    日前iQOO手機官方宣布,新一代電競旗艦iQOO 11S將會在7月4日19:00正式與大家見面。隨著發布時間的日益臨近,官方關于該機的預熱也更加密集,截至目前已
  • Counterpoint :OPPO雙旗艦戰略全面落地 高端產品銷量增長22%

    2023年6月30日,全球行業分析機構Counterpoint Research發布的《中國智能手機高端市場白皮書》顯示,中國智能手機品牌正在尋求高質量發展,中國高端智能
Top