Verzögerung / Latenz? Darauf rufe ich BS an. Diese Praxis sollte einen Overhead von genau Null verursachen. ( Bearbeiten: In den Kommentaren wurde darauf hingewiesen, dass dies tatsächlich die von der HotSpot-VM durchgeführten Optimierungen verhindern kann. Ich weiß nicht genug über die VM-Implementierung, um dies zu bestätigen oder abzulehnen. Ich habe meinen Kommentar auf C ++ gestützt Implementierung virtueller Funktionen.)
Es gibt einige Code-Overhead. Sie müssen alle Konstruktoren aus der gewünschten Basisklasse erstellen und ihre Parameter weiterleiten.
Ich sehe es auch nicht als Anti-Muster an sich. Ich sehe es jedoch als verpasste Gelegenheit. Anstatt eine Klasse zu erstellen, die die Basisklasse nur zum Umbenennen ableitet, können Sie auch eine Klasse erstellen, die die Auflistung enthält und eine fallspezifische, verbesserte Schnittstelle bietet. Sollte Ihr Widget-Cache wirklich die vollständige Oberfläche einer Karte bieten? Oder sollte es stattdessen eine spezielle Schnittstelle bieten?
Darüber hinaus funktioniert das Muster bei Auflistungen einfach nicht mit der allgemeinen Regel der Verwendung von Schnittstellen und nicht mit Implementierungen zusammen. Im einfachen Auflistungscode würden Sie eine erstellen HashMap<String, Widget>
und sie dann einer Variablen vom Typ zuweisen Map<String, Widget>
. Sie WidgetCache
können nicht erweitern Map<String, Widget>
, da dies eine Schnittstelle ist. Es kann keine Schnittstelle sein, die die Basisschnittstelle erweitert, da HashMap<String, Widget>
diese Schnittstelle nicht implementiert wird und auch keine andere Standardauflistung. Und während Sie eine Klasse erstellen können, die erweitert werden soll HashMap<String, Widget>
, müssen Sie die Variablen als WidgetCache
oder deklarieren Map<String, Widget>
, und die erste verliert die Flexibilität, eine andere Sammlung zu ersetzen (möglicherweise die verzögerte Ladesammlung einiger ORMs), während die zweite Art den Punkt besiegt die Klasse zu haben.
Einige dieser Kontrapunkte gelten auch für meine vorgeschlagene Fachklasse.
Dies sind alles Punkte, die zu beachten sind. Es kann die richtige Wahl sein oder auch nicht. In beiden Fällen sind die von Ihrem Kollegen angebotenen Argumente nicht gültig. Wenn er denkt, dass es ein Anti-Muster ist, sollte er es benennen.