1unitedpower: Welches Entwurfsmuster steckt in Traits

Beitrag lesen

problematische Seite

Ja, sicher. Ich habe aber bewusst darauf verzichtet, den Decorator als mögliches Pattern für eine Trait-Implementierung zu bezeichnen, weil es in beiden möglichen Richtungen logisch nicht passt.

Ich habe nur an die erste Richtung gedacht.

(1) Der Trait dekoriert das Nutzerobjekt: Das ist ein vom Schwanz her aufgezäumtes Pferd. Traits sind wiederverwendbar und sollten vom Nutzerobjekt nicht mehr wissen als unbedingt nötig. Ein Trait, der ein Objekt dekoriert, muss aber die gesamte public-Schicht dieses Objekts durchleiten. Geht gar nicht.

Die Public-API durchzuschleifen ist nicht elegant, da gebe ich dir absolut recht. Das ist ja aber auch nicht notwendig. Ich würde auch nicht versuchen mit dem Decorator das Verhalten von Traits zu simulieren. Trotzdem kann ich ich mit beiden Techniken Ähnliches erreichen: Ich erweitere einen Datentypen mit einer gewünschten Funktionalität.