Я знаю, что я хочу сделать звучит глупо, но слушать:функциональность Inject на два класса без общего суперкласса
У меня есть абстрактные классы Entity
и Player
(распространяется Entity
) и не абстрактные классы TestPlayer
(распространяется Player
) и TestMob
(распространяется Entity
).
Теперь я столкнулся со следующей проблемой:
Я хочу, чтобы реализовать некоторые абстрактные методы в Entity
с той же функциональностью, внутри TestPlayer
и TestMob
. Теоретически я мог бы просто создать еще один класс TestEntity
(расширение Entity
) и сделать унаследованием TestPlayer
и TestMob
. Но вот TestPlayer
не мог наследовать от Player
.
Реализация функции непосредственно внутри Entity
не является вариантом, поскольку она не предназначена для всех подклассов, имеющих эту функциональность.
Что можно считать приемлемым решением, кроме дублирующего кода?
То, что вы хотите буквально интерфейс .. http://stackoverflow.com/documentation/java/102/interfaces/706/usefulness-of-interfaces#t=201608081851450672638 – Javant
я, конечно, подумал об этом. Проблема здесь в том, что 'Player' не только добавляет, но и реализует новые методы. – Androbin
О, ладно .. Если бы я правильно прочитал его на этот раз, я бы использовал шаблон стратегии. @ Андробин http://www.tutorialspoint.com/design_pattern/strategy_pattern.htm – Javant