Политика наследования при проектировании базового класса - PullRequest
1 голос
/ 06 января 2011

У меня есть базовый класс и производный класс на стадии разработки. Базовый класс останется одним, но многие производные классы будут наследоваться от него. Поэтому очень дорого вносить изменения в производные классы в будущем, и я ищу лучший дизайн для предотвращения этого.

На самом деле производному классу требуется только несколько методов для переопределения (если необходимо), но заманчиво раскрыть для него больше деталей.

Мой вопрос касается политики, которая будет расширяться в будущем.

Могу ли я свести к минимуму унаследованные методы / свойства для производного класса и, если необходимо, показать больше в следующих версиях без каких-либо изменений в производных классах?

Или я должен раскрыть что-нибудь, что может быть использовано производными классами в будущем, и позволить им выбирать, нужны они им или нет?

Спасибо

Ответы [ 3 ]

2 голосов
/ 06 января 2011

Я бы определенно свел к минимуму количество защищенных методов на данный момент. Всегда трудно предсказать будущее, слишком много вещей меняется во время разработки / дизайна класса, поэтому лучше всего сохранить его простым и создать лучший дизайн для того, что вы знаете сейчас не то, что может или может понадобиться в будущем.

1 голос
/ 06 января 2011

В дальнейшем вы можете без проблем изменить другие методы и свойства с закрытых на защищенные.Единственное правило заключается в том, что существующие защищенные члены никогда не могут снова стать частными

0 голосов
/ 06 января 2011

В дополнение к тому, что опубликовали другие, вы захотите рассмотреть, кто является целевой аудиторией для вашего базового класса. Являются ли они частью API или инфраструктуры, которая предназначена для расширения вашими клиентами или другими внешними потребителями, или эта абстракция полностью находится под вашим собственным контролем (т. Е. Только вы будете реализовывать деривации)?

В зависимости от ответа вам может понадобиться очень тщательно продумать базовые классы, которые вы выставляете - может быть сложно разработать хорошую, гибкую схему наследования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...