1.4 其他有名的設計實踐
除了目前已經介紹的設計模式、原則和企業(yè)模式之外,我還想介紹幾種設計方法學:測試驅動開發(fā)、行為驅動開發(fā)及領域驅動開發(fā)。本節(jié)不會深入討論這些主題,因為已超出了本書的范疇。但是,每一章用來演示模式和原則的關鍵示例代碼均是采用這些方法學設計的,可以從www.wrox.com網站和http://www.tupwk.com.cn上下載這些代碼。
1.4.1 測試驅動設計
TDD(Test-driven Development,測試驅動設計)并不像它的名稱所言,它更多的是一種設計方法學而不是測試策略,這個名稱只是不夠公正。這種設計方法學背后的主要思想是使用測試來塑造系統(tǒng)的設計。在創(chuàng)建軟件解決方案時,首先編寫一個導致測試失敗的測試程序來斷言某種業(yè)務邏輯。然后編寫代碼讓測試通過。最終,通過重構來清理所有代碼。這三步已經被人們稱為紅-綠-重構(red-green-refactor)。紅和綠指的是測試框架分別用來顯示測試通過和測試失敗的顏色。
通過經歷TDD流程,最終將得到一個帶有一套可以確認所有行為的測試的松耦合系統(tǒng)。TDD的一個副產品是這些測試提供了一種描述系統(tǒng)能夠做什么以及不能做什么的文檔。因為測試屬于系統(tǒng)的一部分,所以它絕不會過時,這與編寫的文檔和代碼注釋不同。
更多有關TDD的信息請參考以下著作:
● Test Driven Development: By Example,Kent Beck著
● The Art of Unit Testing: With Examples in .NET,Roy Osherove著
● Professional Enterprise .NET,Jon Arking與Scott Millett合著(Wrox出版)
1.4.2 領域驅動設計
簡而言之,DDD(Domain-driven Design,領域驅動設計)是一組有助于構建反映對業(yè)務的理解并滿足業(yè)務需求的應用程序的模式和原則。除此之外,它是一種思考開發(fā)方法學的全新方式。DDD的建模方式如下:首先通過全面理解真實領域來對真實領域建模,然后將所有的術語、規(guī)則和邏輯放到代碼的某種抽象表示中(通常是以領域模型的形式)。雖然DDD并不是一種框架,但是它確實有一組構建塊或概念可以整合到解決方案中。
在第10章和第11章中構建案例研究應用程序時將運用這種方法學。在第4章中我們將更深入研究DDD的一些方面。
有關DDD的更多信息,請參考以下著作:
● Domain-Driven Design: Tackling Complexity in the Heart of Software,Eric Evans著
● Applying Domain-Driven Design and Patterns: With Examples in C# and .NET,Jimmy Nilsson著
● .NET Domain-Driven Design with C#: Problem - Design - Solution,Tim McCarthy著