雖然DataType看起來是個不起眼的類別,但他卻扮演著摩西分海的重要角色。因為,在他之下,會有Primitive、Complex與Choice三種類型,而這三種類型處理方式皆不同。
DataType是抽象類別,繼承Element,就有了id與extension這兩個屬性。也就是說繼承於DataType的也有。講白了Primitive也有,這就破壞了Primitive的定義。講到Primitive時再深入說明。
另外,應該有注意到,在Type Framework圖中,並沒有看到Complex與Choice呀,是的這兩個沒有,再看這張圖,除了繼承於PrimitiveType的都算是Complex Type。
在這邊就必須要有個設計決策。其他的類別跟Primitive Type都是繼承了DataType,但其他類別的性質真的跟Primitive不同,若把其他類別的實做放在DataType,就會影響到Primitive Type。為了避免這樣子的情形,就得為其他的類別創立一個父類別,稱之為Complex Type 繼承於DataType。其他類別共通性實做,就放在Complex Type上,避開影響Primitive Type。
另外新增一個Choice類別,他也不在這個FHIR Type Framework上,因為他可能組合了Primitive與Complex,所以,為了實做也要多一個Choice。
程式結構如下:
另外,為了區隔DataType的Element實做差異性,這邊的建構元,並沒有繼承於父類別。而這邊的建構元只是讓各類別格式相同,其實,真正建構元都分散在Primitive、Complex與Choice。
沒有留言:
張貼留言