精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

捕獲-嵌入-防護:領域驅動設計的指導原則

責任編輯:editor004

作者:Jan Stenberg

2017-07-13 11:13:09

摘自:INFOQ

在將領域模型嵌入到代碼時,兩個重要的部分是命名和組合,前者可以反映領域意圖,而后者可以反映領域行為。Lowe最后強調,捕獲-嵌入-防護是一個迭代過程,會隨著每個步驟重復多次,從較小的經過驗證的模型逐步構建出一個領域模型。

在使用領域驅動模型(DDD)核心理念和實踐作為軟件設計和開發的指導方針時,可以概括為三個原則:捕獲、嵌入、防護。這是Steven A. Lowe在今年的DDD交流大會上演講時提出的。為了采取積極的行動,我們通過掌握剛好夠用的信息來捕獲領域模型。我們將模型嵌入到代碼和對話中。我們保護領域模型免受其他領域的侵蝕,尤其是技術領域。

在Thoughtworks首席顧問Lowe看來,DDD的出現是一種突破,因為它打破了對企業數據模型的錯誤沉迷,并代之以專注于合作領域的、獨立但重疊的模型。他強調,DDD改變了軟件開發的關注點和范圍,從技術視角轉向了以業務目標指導探索和解決方案。他認為,雖然人們對于DDD還存在一些誤解,但他指出,那些都是錯的:

DDD很難。不,它需要專注和自律,但編程也是如此。DDD會帶來額外負擔。除非你認為沒有必要了解一個領域。DDD僅適合復雜的領域。也許復雜的領域最需要,但這種理念肯定是普遍適用的。

捕獲的目的是可視化領域的思維模型,讓其具備交互性,從而使所有人都達成一致。在Lowe推薦的模型創建方法中,其中一種是把所有人都召集到一個房間里,讓他們專注于領域活動。這項技術被稱為事件風暴——一種由Alberto Brandolini創建的集體建模方法。Lowe發現,這種方法非常強大,可以最大化學習速度,最小化學習負擔。

在將領域模型嵌入到代碼時,兩個重要的部分是命名和組合,前者可以反映領域意圖,而后者可以反映領域行為。Lowe指出,如果你不能給一個東西起個好名字,則可能說明你對你要命名的東西不夠了解。由于文檔和圖表都會過期,所以代碼才是唯一可靠的事實來源。通過將領域模型嵌入到代碼,就可以保證模型永遠正確,而且對于開發人員隨時可見。在更高層面上,領域專家也可以讀懂代碼。

為了保護領域模型免受侵蝕,我們使用邊界將子領域隔離開。上下文的邊界是其接口,即進進出出的命令和事件。但是,邊界的強度也很重要,需要在接口中完成什么驗證和轉換?一種實用的方法是使用模塊從物理上隔離子領域。這樣做的好處包括,代碼庫耦合度更低,更有彈性。Lowe指出,爭取在編碼的第一時間避免技術債務比后續消除它更簡單。

Lowe最后強調,捕獲-嵌入-防護是一個迭代過程,會隨著每個步驟重復多次,從較小的經過驗證的模型逐步構建出一個領域模型。他還指出隨時隨地使用領域驅動設計的重要性;如果你不是有意對領域建模,那么你就不會無意中為其他東西建模。

查看英文原文: Capture - Embed - Protect, Guidelines for Domain-Driven Design

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 馆陶县| 华池县| 郧西县| 丰原市| 大理市| 泰来县| 嵩明县| 吴川市| 孙吴县| 海城市| 简阳市| 濮阳市| 静乐县| 百色市| 游戏| 钟祥市| 镇宁| 昆山市| 昭平县| 吴旗县| 阜平县| 高碑店市| 黎川县| 焦作市| 缙云县| 响水县| 五常市| 崇礼县| 镇宁| 忻城县| 瓦房店市| 环江| 彭州市| 依兰县| 绥德县| 安溪县| 成武县| 大冶市| 马尔康县| 富源县| 烟台市|