Zusätzlich zu den plattformspezifischen Antworten, die bereits dort sind, würde ich gerne aus einer allgemeineren Sicht einsteigen. Diese Frage, von meiner Meinung nach, ist irgendwie mit der Entscheidung im Zusammenhang des Decorator-Muster der Vererbung (zB @Component
vs extends Component
) Auswahl
Einige der Vorteile der Verwendung von Dekorateure sind:
1. Trennung von Bedenken:
Informationen innerhalb Dekoratoren ist deklarativ, sie definieren das Verhalten einer Klasse, höchstwahrscheinlich wird sich im Laufe der Zeit nicht ändern und werden vom Framework verwendet. Klasseneigenschaften und Felder sind klassenspezifische Daten, werden immer verarbeitet und häufig aktualisiert und haben nur innerhalb der Klasse Bedeutung. Diese zwei Arten von Daten sollten nicht miteinander gemischt werden.
2.Unterstützung mehrerer Modifikationen
Viele Sprachen verhindern Mehrfachvererbung aufgrund Diamond problem. Andererseits kann eine Klasse mehrere Dekoratoren für verschiedene Zwecke haben (z. B. @Component
und die veraltete @RouteConfig
).
"Im Allgemeinen können Dekoratoren Funktionen ausführen". Das ist nicht sehr hilfreich. Programmiersprachen lassen Sie "Funktionen ausführen" ... – spinkus