Итак, гипотетически, я создаю какое-то приложение для недвижимости на C #. Для каждого типа свойств я собираюсь создать класс, такой как ResidentialProperty и CommercialProperty. Эти два класса, а также все другие классы свойств будут иметь некоторые общие свойства, такие как Id, Title, Description и Address information.
То, что я хотел бы сделать, это:
а) вернуть коллекцию объектов, которые содержат только основную информацию
b) иметь возможность либо вызвать метод, такой как GetProperty (id), который создаст и возвратит либо ResidentialProperty, либо CommercialProperty, либо вызвать GetProperties (), который возвратит коллекцию того или другого, либо обоих.
Таким образом, с учетом вышесказанного, возможно, имеет смысл создать абстрактный класс с именем BasicProperty (или PropertyBase), который содержит все общие атрибуты и имеет расширение ResidentialProperty и CommercialProperty из него. Это решило бы проблему # 1, так как я мог бы создать метод, который возвращает коллекцию BasicProperties.
Но для # 2, чтобы иметь возможность возвращать либо один тип свойства, либо другой, мне понадобился бы интерфейс (IProperty), и у меня должны были бы наследоваться классы Residential и Commercial, а затем GetProperty (id) и GetProperties () вернуть объект IProperty (или, поскольку они наследуются от IProperty, можно ли вернуть их как есть, а не как интерфейс?)?
Теперь, если мне нужно использовать интерфейс, что мне делать с классом BasicProperty?
- Я оставляю это как реферат и реализую интерфейс? Или
Я оставляю это как резюме, и все 3 класса реализуют Интерфейс? Или
- Разве я не создаю его как абстрактный, не помещаю всю основную информацию в Интерфейс, а BasicProperty, ResidentialProperty и CommercialProperty реализуют Интерфейс?
Спасибо заранее,
Карл Дж.