在第一章中已經介紹過,將應用程式分割成許多小塊(即:元件),在使用時可以隨意調換其中乙個或多個元件,以實現元件的快速淘汰和重組,從而快速滿足客戶的特殊需求或新需求。
這也就是說將應用程式分為多個part,再組合成乙個whole。
要想真正實現快速淘汰和重組的效果,part就不能隨意劃分。part的劃分要講究「有機次序」。只有「分」得好,才能「合」得快,合得妙。
所以,下面專門討論如何劃分part。
我們可以分析whole是否面臨如下情況,如果有,那我們就可以把這部分劃分出來,作為乙個part:
1 希望組合出多樣化的whole
2 希望分散開發生產,加快whole的組合速度
3 希望元件提前開發,縮短whole的生產時間
4 希望可外購現成元件,以降低成本
5 希望專注做小組件,並大量生產我們還可以從以下角度來洞悉「穩定」的部分和「變化」的部分,將「穩定」和「變化」劃分開,成為不同的part:
1 根據客戶而分:比如:大部分人喜歡加糖咖啡,但正在**的女士則喜歡無糖或低糖咖啡。所以咖啡是穩定的,糖是變化的。因此將糖和咖啡劃分開。
2 根據時間而分:常見的三種組合關係分類分類比如:汽車的車體在設計時就已固定,但汽車的顏色是在顧客購買時才確定的。因此將車體生產和車身上色劃分開。
舉例符號
組合/部分
房子和門
房子和窗戶
汽車和引擎
容器/內容
汽車和司機
巴士和乘客
集合/成員
雁群和大雁
東南亞總行程和香港觀光行程
odell提出的組合關係分類
擔任過美國omg主席的james odell提出了一套關係分類方法,他根據3項特性將組合關係分為6種。
其中,3項特性分別是:配置、同質性、不變性。
配置:「部分」與「整體」有特定的功能和結構關係
同質性:「部分」與「整體」是一種東西
不變性:「部分」難以從「整體」中抽離出來6種組合關係如下表:
說明:1.我沒有搞明白「配置」這項特性到底如何理解,所以下表中沒法把對「配置」的解釋寫出來。
2.我個人認為這種分類方法過於繁瑣,不如前一種方法簡單明瞭。
3.我個人認為這種分類方法的3個特性中,不變性最為重要,因為是否具備不變性決定了使用哪種符號:不變使用composition,可變使用aggregation。
分類舉例
配置同質性
不變性符號
元件/整體物件的組合
cpu和電腦
風扇和電腦
非同質:
cpu、風扇和電腦不是一種東西
可變:cpu、風扇可以衝電腦中取出來
材料/物件的組合
油和紅龜粿
糖和紅龜粿
糯公尺和紅龜粿
非同質:
油、糖、糯公尺和紅龜粿不是一種東西
不變:油、糖、糯公尺一旦製成紅龜粿就沒法再取出來了
切割部分/物件的組合
一塊餅乾和一盒餅乾
同質:一塊餅乾和一盒餅乾都是餅乾
可變:可以從一盒餅乾中拿出一塊餅乾
地方/地區組合
東南亞總行程和香港觀光行程
同質:東南亞總行程和香港觀光行程都是行程
可變:可以單獨進行香港觀光行程,從另乙個角度看也可以從東南亞總行程中去掉香港觀光行程,這並不影響東南亞總行程的存在
成員/聚集組合
(同前一種分類法中的容器/內容)
會員與俱樂部
可變:會員可退出俱樂部,這並不影響俱樂部的存在
成員/合夥組合
(同成員/聚集組合的區別就在於不變性)
父母親一方和雙親家庭
不變:缺少父母親任一方就不再是雙親家庭了
高煥堂《嵌入式UML設計》讀書筆記 第四章
第二章介紹元件之間相互傳遞訊息,第三章介紹元件的組合與協作關係,本章則介紹元件的行為。訊息激發元件的行為,行為塑造元件的新關係和狀態。設計軟體就是要充分描述元件的行為,掌握元件協作關係,靈活傳遞訊息。捕捉物件行為應關心的是 事件 event 狀態 state 和動作 action 事件是外來的刺激。...
設計模式讀書筆記(一) UML
統一建模語言 unified modeling language,uml s 是一種視覺化的標準建模語言,是一種分析和設計語言,通過uml可以構造軟體系統的藍圖。uml通過統一的表示方法,讓不同知識背景的領域專家 系統分析設計人員和開發人員以及使用者可以方便的交流。1.uml的結構 5種檢視 vie...
測試驅動的嵌入式C語言開發讀書筆記
瀑布模型的最後開發人員會亂作一團,而縮短開發周期是一種減少問題的方案 測試驅動開發 tdd 是一種增量式軟體開發技術。簡單說明及在沒有失敗的單測前提下不寫產品 測試要小且自動化。tdd操作步驟 增加乙個小測試。執行所有測試並期待新的測試失敗,也可能壓根編譯不過。為了讓測試通過做一些小改動。執行測試並...