分析模式 - 度量与测绘
生活随笔
收集整理的這篇文章主要介紹了
分析模式 - 度量与测绘
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數量(Quantity)
對象模型:????????????????????????????????????????????????????????????????????????????????????????????????????????????? 數據模型:
Unit: 單位主表,一般保存度量單位的代碼、文本描述(可能需要處理多語言問題)等
Unit_Ratio: 單位轉換率
Quantity主要封裝與單位相關的邏輯,例如:
person1.Height.Add(8.5, Unit.Get("cm"));
person1.Height.Add(0.03,?Unit.Get("m"));
Quantity?diff?=?person1.Height?-?person2.Height; 單位處理邏輯中一個主要功能是單位轉換運算,例如Quantity相減的操作符重載代碼類似如下:
public?static?Quantity?operator?-(Quantity?left,?Quantity?right)
{
????Quantity?diff?=?new?Quantity(left._amount,?left._unit);
????diff._amount?+=?right._amount?*?right._unit.Ratio(left._unit);
????return?diff;
}
度量(Measurement)
度量是對數量模式的進一步抽象,書中以體檢為例,進行一次體檢就是得到一組各方面的度量數據,例如身高、體重、血壓等,如果象上面那樣在一個表中使用不同字段存儲各個指標以及單位,自段會非常多,因此有了下面這個模式
對象模型:
???
數據模型:
???
PhenomenonType2: 度量類型,例如長度、重量、體積等,每種度量類型關聯多個度量單位(Unit)
示例數據:
???
???
1. 某個人體檢結果(實際上應當有個體檢對象)的各種度量(PhenomenonType)指標均保存在Measurement中
2. 對象模型中Measurement與Quantity分開,各司其職
3. 界面上讓用戶選擇單位時可以根據度量類型(PhenomenonType)縮小可選擇單位的范圍,例如身高這個屬性只能選擇長度單位
4. 對于每種度量類型可以維護一個基本單位(Is_Basic),系統一些內部運算以基本單位為準,例如財務、庫存的交易、月結盤點,ERP的MRP運算等
?? 為簡化終端用戶對單位轉換率的維護工作,可以只維護每種單位到基本單位的轉換率,系統自動計算同一度量類型中任意兩種單位之間的轉換率,但系統也可以不將這個邏輯硬編碼而做的更靈活,這是一種基本的業務設計、指導方式
測繪(Observation)
測繪是對上面兩種模式的進一步抽象
度量模式雖然使用度量類型帶來了更大的靈活性通用性,但考慮的仍然是 "數量+單位" 這種測量類型,以色盲這一體檢項目為例,它仍然是一個評測指標,但評測結果一般表現為一組可選值: A類紅色盲、B類紅色盲、B類紅色弱、B類綠色弱等
所以提取一個測繪基類(Observation),從它派生出兩種類型: 度量(Measurement)和分類評測(CategoryObservation)
對象模型:
???
數據模型:
???
CagegoryOption3: 每種分類評測(CategoryObservation)類型可選值列表
PhenomennonType3: 添加一個Observation_Type字段用來區分屬于哪種測繪類型,例如1: Measurement, 2: CategoryObservation
用面向對象的手段,Measurement3、CategoryObservation3與Observation3之間為實現接口或繼承基類的關系;使用結構化設計手段,他們之間只是弱關聯關系,Martin在書中實現泛化一節有詳細說明
上面圖例可以理解為使用單表繼承(Single table inheritance)實現這個繼承關系,對于Measurement子類型Category_Option字段無效,對于CategoryObservation子類型Amount和Unit字段無效;CategoryObservation3和Measurement3因為行為上的差異而需要使用不同子類實現,Measurement3與Quantity3同樣因為關注的職責不同而分離開;圖中明顯表現出多余、重復的氣味,所以并不是一個優化設計方案,但對于理解Martin講的Observation是什么正合適
轉換率的時效性
指單位之間的轉換隨時間浮動,典型的是各種幣別之間的匯率,這種情況下轉換率需要添加有效時間范圍,例如:
???????
對象模型:????????????????????????????????????????????????????????????????????????????????????????????????????????????? 數據模型:
Unit: 單位主表,一般保存度量單位的代碼、文本描述(可能需要處理多語言問題)等
Unit_Ratio: 單位轉換率
Quantity主要封裝與單位相關的邏輯,例如:
person1.Height.Add(8.5, Unit.Get("cm"));
person1.Height.Add(0.03,?Unit.Get("m"));
Quantity?diff?=?person1.Height?-?person2.Height; 單位處理邏輯中一個主要功能是單位轉換運算,例如Quantity相減的操作符重載代碼類似如下:
public?static?Quantity?operator?-(Quantity?left,?Quantity?right)
{
????Quantity?diff?=?new?Quantity(left._amount,?left._unit);
????diff._amount?+=?right._amount?*?right._unit.Ratio(left._unit);
????return?diff;
}
度量(Measurement)
度量是對數量模式的進一步抽象,書中以體檢為例,進行一次體檢就是得到一組各方面的度量數據,例如身高、體重、血壓等,如果象上面那樣在一個表中使用不同字段存儲各個指標以及單位,自段會非常多,因此有了下面這個模式
對象模型:
???
數據模型:
???
PhenomenonType2: 度量類型,例如長度、重量、體積等,每種度量類型關聯多個度量單位(Unit)
示例數據:
???
???
1. 某個人體檢結果(實際上應當有個體檢對象)的各種度量(PhenomenonType)指標均保存在Measurement中
2. 對象模型中Measurement與Quantity分開,各司其職
3. 界面上讓用戶選擇單位時可以根據度量類型(PhenomenonType)縮小可選擇單位的范圍,例如身高這個屬性只能選擇長度單位
4. 對于每種度量類型可以維護一個基本單位(Is_Basic),系統一些內部運算以基本單位為準,例如財務、庫存的交易、月結盤點,ERP的MRP運算等
?? 為簡化終端用戶對單位轉換率的維護工作,可以只維護每種單位到基本單位的轉換率,系統自動計算同一度量類型中任意兩種單位之間的轉換率,但系統也可以不將這個邏輯硬編碼而做的更靈活,這是一種基本的業務設計、指導方式
測繪(Observation)
測繪是對上面兩種模式的進一步抽象
度量模式雖然使用度量類型帶來了更大的靈活性通用性,但考慮的仍然是 "數量+單位" 這種測量類型,以色盲這一體檢項目為例,它仍然是一個評測指標,但評測結果一般表現為一組可選值: A類紅色盲、B類紅色盲、B類紅色弱、B類綠色弱等
所以提取一個測繪基類(Observation),從它派生出兩種類型: 度量(Measurement)和分類評測(CategoryObservation)
對象模型:
???
數據模型:
???
CagegoryOption3: 每種分類評測(CategoryObservation)類型可選值列表
PhenomennonType3: 添加一個Observation_Type字段用來區分屬于哪種測繪類型,例如1: Measurement, 2: CategoryObservation
用面向對象的手段,Measurement3、CategoryObservation3與Observation3之間為實現接口或繼承基類的關系;使用結構化設計手段,他們之間只是弱關聯關系,Martin在書中實現泛化一節有詳細說明
上面圖例可以理解為使用單表繼承(Single table inheritance)實現這個繼承關系,對于Measurement子類型Category_Option字段無效,對于CategoryObservation子類型Amount和Unit字段無效;CategoryObservation3和Measurement3因為行為上的差異而需要使用不同子類實現,Measurement3與Quantity3同樣因為關注的職責不同而分離開;圖中明顯表現出多余、重復的氣味,所以并不是一個優化設計方案,但對于理解Martin講的Observation是什么正合適
轉換率的時效性
指單位之間的轉換隨時間浮動,典型的是各種幣別之間的匯率,這種情況下轉換率需要添加有效時間范圍,例如:
???????
轉載于:https://www.cnblogs.com/RicCC/archive/2008/04/26/analysis-patterns-measurement-and-observation.html
總結
以上是生活随笔為你收集整理的分析模式 - 度量与测绘的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据远程实时备份容灾方案
- 下一篇: 第10章 常用功能及函数集;客户端IP地