Performanze, Effizienz, Skalierbarkeit, Vermeidung von Coderedundanzen, Wartungsfreundlichkeit und Wirtschaftlichkeit
Gegeben sei eine Klasse Forum. Irgendwann kam die Aufgabe, alle Foren dieser Klasse um einen RSS Feed zu erweitern, der bei einem bestimmten, an den URL angehängten Parameter ausgegeben werden soll. Nun ergab es sich, daß sämtliche RSS Feeds auch über eine andere Klasse mit dem Namen RSS dargestellt werden sollen. Eigentlich ist das ein klassischer Fall für Vererbung, denn sowohl die Klasse RSS als auch die Klasse Forum erben von einer gemeinsamen Basisklasse.
Falls also der Vorteil der Vererbung genutzt werden soll, würde man in der Basisklasse eine Methode definieren welche den Feed in ein Template rendert. Somit wäre jedenfalls der Code dieser Methode nicht rendundant. Infolge der Vererbung jedoch ergibt sich ein Nachteil hinsichtlich Effizienz, denn die rss()-Methode würde jedesmal mit kompiliert werden, also auch dann wenn sie in den anderen Klassen die ebenfalls von der Basiklasse erben gar nicht gebraucht würden.
Genau an dieser Stelle setzt die Idee der Traits an: Die rss()-Methode wird in einen Trait ausgelagert welcher von der Klasse Forum gleichermaßen genutzt wird wie von der Klasse RSS.
Datenschutzerklärung: Diese Seite dient rein privaten Zwecken. Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. sos@rolfrost.de.