正說領域驅動設計

來源:互聯網
上載者:User

  領域驅動設計的核心思想是將開發人員從關注程式本身帶離出來,不用考慮程式的實現和更多的是熟悉領域知識。將設計的重點放在了領域,開發的重點放在了模型。以前的任務是分析在領域裡面進行,現在的目的是分析和開發都是圍繞領域進行的。這樣,開發出來的軟體才是真正為領網域服務的。下面是我總結的一些要點。

  第一,我們要開發的軟體,是針對特定領域的。軟體架構師和系統分析人員都不是很清楚領域知識,更不用說程式員了。只有領域專家才是真正熟悉該領域的。為了讓開發人員不脫離模型,所以參與的人員有開發專家,領域專家和開發人員。一個比較好的溝通方式是建立一些小圖,每個小圖體現模型中的一個子集,再加上一些文本注釋。文本將解釋圖中不能表現的一些行為和約束。這些圖可以是手繪的,意味著隨時可以變化。

  第二,不得不講一下模型設計的基本要素。分別有分層架構,實體,值對象,工廠,資產庫,服務,模組。分層架構的思想是將系統一般分為四層,分別是ui層,應用程式層,領域層,基礎設施層。ui層當然是介面的展現了,應用程式層是一個很薄的層,主要的功能是轉換ui層的需求到領域層。這層轉換是非常必要的。ui層之關注介面設計,領域層只關注領域建模。應用程式層會成為商務邏輯的管理者,監督和協調整個應用活動。領域層自然關注的是領域建設,這個方面挺多。下面會涉及。基礎設施層包括一些存放裝置,比如資料庫,xml,檔案之類的。實體就是被惟一標識的對象。值對象並不需要惟一表示,輔助實體完成功能,或者為其他物件服務等。工廠是分離對象的建立過程。比如一些實體或者值對象的建立過程比較複雜,則需要工廠來封裝這種建立過程。資產庫主要是管理實體物件的一個容器,包括持久化實體類和緩衝實體類。如果領域涉及到多個物件交織完成功能的,則需要建立一個服務來統一組織這種活動。有點像facade模式。但是這種組織是有區別於應用程式層的,它還是領域層的設計。模型很多時,我們有必要對模型進行一個高內聚低耦合的區分,這樣就有了模組。

  第三,領域模型搭建好了,剩下的是實現模型了。在開發過程中經常發生的事情是,開發的後期,發現模型沒有用處了。那如何能保證模型的一致性呢。這也是很重要的。如果系統比較大,則將系統劃分成不同的子系統,分別對子系統進行建模。這裡面有好幾種模式,共用核心,客戶——供應商,獨立方法,開放主機模式。共用核心是兩個子系統有了交集,必須維護好這段交集,如果涉及到對交集的更改,必須雙方討論同意後才能更改。客戶——供應商模式,涉及到現實問題,必須要有足夠把握供應商願意為客戶提供服務,獨立方法適用於相對和獨立的子系統。開放主機模式主要是考慮一個共同的服務服務的對象還是其他的服務。如果分別定義隔離層則比較繁瑣和不利於變化。所以採取發布服務的形式。這裡面還有一個放崩潰層的應用,適用於底層系統結構混亂,上層又需要使用的這麼一種情況,是一個facade模式。為了保持模型的一致性,還需要不斷的整合。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.