標籤:style blog http color 使用 strong
本章內容要點:
1.Transaction Script模式組織商務邏輯
2.Active Record模式和Castle Windsor來組織商務邏輯
3.Domain Model模式來組織商務邏輯
4.Anemic Model模式和Domain Model 來組織商務邏輯的差異
5.理解領域驅動設計DDD以及如何運用它讓自己專註於商務邏輯而不是基礎設施關注點
並非所有的應用程式都是一樣的,也並非所有的應用程式都需要複雜的體繫結構來封裝系統的商務邏輯。作為開發人員,重要的是要理解所有領域邏輯模式的優缺點,這樣才能設計出最合適的模式。
Transaction Script
這個我就不費過多的口舌了。完全是面向過程式的寫法。所以是最容易理解,掌握和運用的模式。通常的做法是為每隔業務事務建立一個單獨的方法,並將它們組合起來放入某種靜態管理程式或服務類。每個過程都包含了完成業務事務所需要的所有的商務邏輯,包括工作流程,商務規則和資料庫持久化驗證檢查。
其優勢是容易理解並上手。
其劣勢是一旦程式變大或者商務邏輯變得複雜時,方法的數目變多,從而形成一個充斥著功能交疊的細粒度方法的無用API。代碼將會很快變得笨重且不可維護。
由於這種方式比較簡單,我們無須給出樣本。
Active Record
Active Record模式是一種流行的模式,尤其在底層資料庫模型匹配業務模型時,它特別有效。通常,資料庫中的每張表都對應一個業務對象。業務對象表示表中的一行,並且包含資料、行為以及持久化該對象的工具,此外還有添加新執行個體和尋找對象集合所需的方法。
在Active Record模式中,每隔業務對象均負責自己的持久化和相關的商務邏輯。
Active Record模式非常適用於在資料模型和業務模型之間具有一對一映射關係的簡單應用程式,如部落格或論壇引擎。如果已經有資料庫模型或者希望採用“資料優先”的方法來構建應用程式,這也是一個可用的好模式。因為業務對象與資料庫中的表具有一對一映射關係,而且均具有相同的建立,讀取,更新和刪除方法,所以可以使用代碼產生工具自動產生業務模型。與Transaction Script模式一樣,Active Record模式也非常簡單並且易於掌握。
Active Record模式隨著基於資料庫的Web應用程式而流行,其中一個典型就是結合了MVC模式和Active Record ORM的Ruby on Rails架構。在.net領域,構建在NHibernate之上的Castle ActiveRecord項目是最流行的開放原始碼Active Record架構之一。以下將通過構建一個簡單的部落格網站(部落格網站只包含少量的商務邏輯,因此在業務對象和資料模型之間存在較好的相關性),來展示其具體用法。