2015-06-17 3 views
0

В Анализ шаблонов, Фаулер описывает, как бороться с клиническими наблюдениями, которые могут быть либо измерением числового значения, либо категорическим наблюдением (отсутствие или наличие симптомов, пола и т. Д.). Вот соответствующая схема:Каким должен быть интерфейс для наблюдения Фаулера?

enter image description here

Эта схема предполагает, что Observation должен быть какой-то общий интерфейс для Measurement и Category Observation. Но я не вижу, как это можно сделать на строго типизированном языке. Предположим, например, что я хочу перебрать все Observation s, сделанные на Person, и сделать что-то другое в зависимости от того, являются ли они Measurement s или Category Observation, как я могу избежать обмана, такого как тестирование типа объекта, литье и т. Д.?

+0

Кто-то с репутацией 11.5k должен знать, почему это было помечено мной для закрытия – ChrisBint

ответ

0

Мое понимание - это (и я, возможно, ошибаюсь). Как количество, так и категория происходят из общего интерфейса (возможно, называемого ObservationParameter), этот интерфейс имеет API-интерфейсы для обработки данных, которые инкапсулируются базовым типом (например, оценивают или сравнивают, прошу простить мою нехватку знаний для домена). Поэтому, итерации над людьми, вы просто получаете наблюдение.getObservationParameter(). Оцените() (.. или что-то в этом роде). Таким образом, вы все еще работаете с абстрактными типами без необходимости приведения или проверки. Соответствующая численная или категориальная логика будет реализована конкретными реализациями количества и категории соответственно.

Смежные вопросы