在分析模式中,Fowler描述了如何处理临床观察,可以是数值的测量,也可以是分类观察(症状,性别等的缺席或存在)。以下是相关图表:
此图表明Observation
应该是Measurement
和Category Observation
的某种通用界面。但我看不出如何用强类型语言完成这项工作。例如,假设我想迭代在Observation
上生成的所有Person
,并根据它们是Measurement
还是Category Observation
执行不同的操作,我可以避免欺骗,例如测试对象的类型,转换等吗?
答案 0 :(得分:0)
我的理解是这个(我可能错了)。数量和类别都来自一个公共接口(可能称为ObservationParameter),该接口具有API来处理由底层类型封装的数据(例如,评估或比较,原谅我对域的缺乏知识)。因此,在迭代人员时,你只需要获取observe.getObservationParameter()。evaluate()(或类似的东西)。这样您仍然可以使用抽象类型而无需强制转换或检查。适当的数值或分类逻辑将分别由数量和类别的具体实现来实现。