Eine Frage über Zusammensetzung und Objektorientierung:Java Zusammensetzung Frage
Ich versuche, mehr Funktionen für eine Klasse (Java TreeMap als ein Beispiel) zu implementieren.
public class TreeMap<K,V>
extends AbstractMap<K,V>
implements NavigableMap<K,V>, Cloneable, Serializable
Mit Zusammensetzung ist die way to go on this, also würde ich zuerst eine wiederverwendbar Weiterleitungsklasse schaffen haben, die die Funktionalität der Klasse wickeln wird, während zugleich es nur, dass auszukommen, so dass es in Zukunft anderswo verwendet werden.
public class ForwardingNavigableMap<K,V> implements NavigableMap<K,V>
{
...
}
Ich würde dann mit dem Erstellen einer Wrapper-Klasse gehen, die die neu erstellte reusable forwarding class, wie so erbt:
public class BetterTreeMap<K,V> extends ForwardingNavigableMap<K,V>
{
/* some new cool features here */
}
Was die ich in brauchen passiert, wenn TreeMap eine Reihe von feinen Features enthält meine Klasse, die nicht Teil der NavigableMap-Schnittstelle sein könnte? Sollte ich dann weitermachen, indem ich mein eigenes Interface für TreeMap deklariere und das in meiner wiederverwendbaren Klasse implementiere? Jede Eingabe hier ist willkommen.
Ich versuche, eine Objektbegrenzungshierarchie für die Kollisionserkennung in einem einfachen Spiel zu erstellen. Ich bin nicht sicher, ob TreeMap das ist, was ich will, also muss ich es später ersetzen können, weshalb die Präferenz von Komposition über Vererbung (erweitert) – Andreas
Composition erlaubt dynamische Änderung des Typs der zugrunde liegenden Map. Vererbung erfordert eine Neukompilierung, um sie zu ändern. Wie schwer wird es sein, den Code neu zu kompilieren, wenn Sie das möchten? –