У меня есть группа классов, которые расширяют один абстрактный класс.Подмножество этих классов нуждается в идентичной реализации одного из методов, другое подмножество классов нуждается в другой реализации метода, а третье подмножество требует еще одного.Всего существует около десяти дочерних классов, но только три возможных реализации одного из методов.(Есть много других методов, которые реализуют классы, которые не имеют ничего общего.)
Я пытаюсь найти лучший способ сделать это.Я думаю, что я бы сделал в C ++ множественное наследование: создайте три класса, которые реализуют только этот метод, затем пусть дети наследуют от соответствующего одного из этих трех классов.
Есть ли лучшая практика для этогов Java?
Я рассматривал промежуточный слой из трех абстрактных классов, между основным абстрактным классом и детьми.Каждый из трех наследует основной абстрактный класс и реализует данный метод.Тогда дети наследуют эти три.Но что мне не нравится в этом, так это то, что если другой метод сопровождается аналогичным поведением «группировки», и он не соответствует трем классам «среднего уровня»?Это было бы ужасно
Есть ли в этом смысл?Я пишу в спешке ...
РЕДАКТИРОВАТЬ: Итак, через 24 часа после того, как задать свой вопрос, я получил около полудюжины шаблонов для расследования.Я еще не уверен, что все они являются официальными именами шаблонов дизайна.Но я собираюсь изучить каждый из них, а затем доложить (и выбрать правильный ответ).До сих пор паттены предлагали:
* Delegation
* Bridge
* Strategy
* Composition
* Decorator (if I was choosing on name alone, I choose this one)
Я также должен добавить, что реализуемому методу нужен доступ почти ко всем закрытым членам класса.Так что это будет иметь большое значение в моем выборе.