У меня есть базовый класс Person
и три производных. На странице редактирования у меня есть раздел с данными общего человека (имя, адрес и т. Д.).Каков наилучший способ проверить, существует ли подкласс определенного типа?
Я также хочу раздел для каждого подкласса. Поэтому, если Person
является User
Я хочу добавить раздел с конкретными данными пользователя. Если Person
также является CardHolder
, я хочу показать раздел держателя карты.
Я борюсь за то, как это реализовать. Я имею в виду, чтобы задать UserRepository
, если указанным Person
является User
. Если это так, метод вернет объект User
; иначе null. Я планирую сделать это для всех подклассов.
Однако у меня есть это чувство, что это можно сделать лучше, но я не могу найти этот путь.
EDIT:
У меня следующий сценарий. У меня есть обзор с объектами Person
(а не с производными!). Когда нажимается строка, я хочу показать страницу сведений. На этой странице у меня есть разные разделы, как описано выше. На этом этапе я хочу знать, является ли «Лицо» также User
или «Держателем карты».
Я хотел бы применить полиморфизм, но я не вижу, как ...
Если вы используете логику, основанную на типе объекта, вы делаете это неправильно. – jason
@Jason Как бы вы это реализовали? – Martijn
Я бы воспользовался этим: http://en.wikipedia.org/wiki/Method_overriding – jason