Наследование для добавления функциональности - PullRequest
1 голос
/ 30 ноября 2011

У меня простой вопрос о наследовании классов.

Предположим, у меня есть класс. У этого есть некоторые основные функциональные возможности. И теперь мне нужно использовать этот класс, но мне нужно добавить некоторые другие функции, которые предназначены только для этой цели. Так что мой интерфейс этого класса будет сломан. Базовый класс используется во многих местах, в виде которых.

Должен ли я сделать производные от этих базовых классов? Или лучшее решение?

Подробнее: базовый класс - это текстовый редактор с такими функциями, как импорт / экспорт в XML, HTML и элементы управления для навигации. Это просто выглядит как редактор stackoverflow. И мне нужно добавить некоторые методы, которые предназначены только для новых целей.

Ответы [ 3 ]

2 голосов
/ 30 ноября 2011
0 голосов
/ 30 ноября 2011

Если ваш класс имеет функции a (), b () и c (), и вы добавляете f (), g () и h (), не изменяя предварительные условия и постусловия a (), b () и c (), ваши клиенты не заметят этого «изменения» в интерфейсе - это просто расширение, и оно будет совместимо с вашим существующим кодом. В этом случае вы можете «просто сделать это».

Как ваши изменения повлияют на существующий код?

0 голосов
/ 30 ноября 2011

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

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