Вопрос о составе и ориентации объектов:Вопрос о составе Java
Я пытаюсь реализовать дополнительные функции для класса (Java TreeMap в качестве примера).
public class TreeMap<K,V>
extends AbstractMap<K,V>
implements NavigableMap<K,V>, Cloneable, Serializable
Использование композиции является way to go on this, так что я должен был бы создать первый класс многоразовые переадресации, который будет обернуть функциональность класса, в то время как в то же самое время сделать это делать только то, что так, что он может будет использоваться в других местах в будущем.
public class ForwardingNavigableMap<K,V> implements NavigableMap<K,V>
{
...
}
Я бы тогда приступить к созданию класса-оболочки, который наследуется вновь созданный reusable forwarding class, например так:
public class BetterTreeMap<K,V> extends ForwardingNavigableMap<K,V>
{
/* some new cool features here */
}
Что произойдет, если TreeMap содержит ряд тонкостей, которые мне нужны в мой класс, который может не быть частью интерфейса NavigableMap? Должен ли я тогда продолжить объявление моего собственного интерфейса для TreeMap и реализовать его в моем многоразовом классе? Любой вход здесь ценится.
Я пытаюсь создать объект, ограничивающий иерархию для обнаружения столкновений в простой игре. Я не уверен, что TreeMap - это то, что я хочу, поэтому мне нужно будет его заменить позже, поэтому предпочтение композиции над наследованием (extends) – Andreas
Композиция позволяет динамически изменять тип базовой карты. Inhertitance требует перекомпиляции, чтобы изменить его. Насколько сложно будет перекомпилировать ваш код, если вы хотите это сделать? –