Как сделать это без множественного наследования

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

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

Есть ли лучшая практика для этого в Java?

Я рассматривал возможность создания промежуточного слоя из трех абстрактных классов между главным абстрактным классом и дочерними классами. Каждый из этих трех классов наследуется от главного абстрактного класса и реализует рассматриваемый метод. Затем дочерние классы наследуют от этих трех. Но что мне не нравится, так это то, что если появится другой метод с аналогичным поведением "группировки", и он не будет соответствовать трем классам "среднего уровня"? Это было бы некрасиво

Имеет ли что-нибудь из этого смысл? Я пишу в спешке...

EDIT: Итак, через 24 часа после того, как я задал свой вопрос, я получил около полудюжины шаблонов для исследования. Я еще не уверен, что все они являются официальными названиями паттернов проектирования. Но я собираюсь изучить каждый из них, а затем отчитаться (и выбрать правильный ответ). Паттерны, предложенные на данный момент:

* Delegation

* Bridge

* Strategy

* Composition

* Decorator (if I was choosing on name alone, I choose this one)

Я также должен добавить, что реализуемому методу нужен доступ почти ко всем закрытым членам класса. Так что это будет иметь большое значение в моем выборе.

7
задан John Fitzpatrick 3 January 2012 в 18:58
поделиться