.NET初學者架構設計指南(三)設計模式
[2] .NET初學者架構設計指南(三)設計模式
[3] .NET初學者架構設計指南(三)設計模式
[4] .NET初學者架構設計指南(三)設計模式
[5] .NET初學者架構設計指南(三)設計模式
系列文章導航:
.NET初學者架構設計指南(一)Hello world的時代
.NET初學者架構設計指南(四)Model-View-Controller
在上一篇里面,我們初步了解了OO設計,OO設計的最獨特之處在于他看待需求的方式。用這樣的方式,我們不需要急于確定軟件需要實現哪些流程、設計哪些功能點、制作哪些畫面,而是要關注需求中一些更加基本的概念。首先根據這些概念開發出一些零件,然后把這些零件組裝起來實現需要的功能。用這樣的方式,我們不需要一開始就去知道所有的業務需求,只需要知道一些比較重要的需求,就可以開始開發了。這樣開發出來的程序不僅可以實現當前的需要,同時也是一個業務開發的平臺,在這個平臺上可以不斷的開發新的功能。
這種設計思想有很多實際的例子,比如Microsoft Office。下面的圖就展示了Excel里面最基本的幾個對象:
Excel的各項功能都是建立在這個對象模型基礎上的。比如要實現設置字體的功能,就可以這樣編寫:先打開一個字體對話框,使用者選擇字型、字號,然后把這個字體設置到區域上:
Font font = CommonFontDialog.ChooseFont(); Application.ActiveWorkbook.ActiveSheet.Range("A1").Font = font;
Excel還把這些對象的引用暴露給了腳本引擎,于是我們就可以使用VBA調用他們,實現我們自己想要的各種功能,這就是Office宏。我們可以編寫一段VB腳本,把鼠標選中區域的單元格復制到另一個工作表中,然后把某一個的單元格的值賦值為一個公式,計算出我們需要的數值。Excel不僅本身是一個好用的制表工具,他更是一個強大、易用的開發平臺。使用者可以隨時根據自己的想法,開發出需要的功能。一些大型的軟件系統都是具有這樣的特點,一開始就明確所有的功能需求是不可能的,重要的是形成一個業務開發的平臺,提供一些業務編程接口,在這個平臺上就可以不斷的開發出新的功能。這樣的開發方式不使用OO設計是很難實現的。
軟件的第一個維護者和第一個使用者就是開發者本人,因此,開發迅速、功能靈活、維護簡單——這些特點在精心設計的軟件中經常是同時具有的。
運用OO方法設計程序的時候會遇到的這樣困難:我們從需求中發現了一些模糊的概念,但是怎樣才能根據這些概念建立合理的對象模型呢,到底哪些概念應該是一個類,哪些概念只應該是一個方法和屬性,這些類之間應該是什么樣的關系?要解決這個問題,最根本的途徑當然是盡量深入的了解需求(比如說翻翻會計原理,看看應收款未收和已收的時候應該如何記賬,其中一個記賬原則也許就是一個重要的對象;協助用戶做一個供電方案,隨手畫出的草圖,或者某個計算公式就是一個重要的對象)。在解決了一個個困難之后,有人總結了經驗,形成了一些解決特定問題的固定套路,這樣的套路就是設計模式。
有些設計模式和OO沒有什么必然的關系,比如層次模式,消息模式。但是大部分設計模式都是在OO設計中形成的,這些模式可以幫助我們發現系統中的對象、設計對象之間的關系。了解這些模式可以幫助我們把軟件設計的更加合理。并且,在探索需求的過程中,我們也可以從模式中得到一些啟發,獲得設計的靈感,發現需求的真實面貌。