共通性分析與可變性分析
共通性分析:
尋找的是不可能隨時間而改變的結構,為架構提供更長效的要素。
可變性分析:
找到可能變化的結構,促進架構適應實際使用所需。
(可變性分析只在相關聯的共通性分析定義上下文才有意義。)
共通性與可變性分析設計方法
共通性 (抽象類別):
需要用什麼介面來處理類別的所有責任。
可變性 (子類別):
對於特定的實做,要怎樣根據指定的規約來實做它。
共通性和可變性分析和、三種視角、抽象類別之間的關係
上述圖與抽象類別的對應關係
抽像類別與核心概念:
抽象類別代表所有子類別關聯起來的核心概念。正是這個概念定義了子類別的共通性。
共通性與要使用的抽象類別:
共通性定義需要使用的抽象類別。
可變性與抽象類別的子類別:
共通性中辨別出的可變性將成為抽象類別的子類別。
規約與抽象類別的介面:
這些類別的介面對應於規約層次。
可測試性與架構關聯
內聚:
程式碼更容易測試,因為程式碼只負責一項責任。
冗餘程式碼:
如果冗餘度增加,會降低整個系統的可測試性。
可讀性:
程式碼更好測試,因程式碼方法名稱和參數都能更精確地說明各自意圖。
封裝性:
因耦合性很鬆更易測試,整體相互依賴性較少。
TDD 模式可以讓開發者思考,要如何做出易測試的架構,變相思考上述幾點,也和設計模式的理念相似。
設計模式三大類
Creational Pattern 創建型模式:
用於描述如何建立物件,主要核心為把物件的建立和使用分開。
Structural Pattern 結構型模式:
描述了在保持原結構的彈性和效能下,如何將類別或物件透過複合(composition)、繼承(inheritance)的方式,建構出更大更複雜的架構。
Behavioral Pattern 行為型模式:
描述物或類別之間如何溝通協作。
.png)