Meine ganze Factory besteht aus Traits, die übrigens auch Unit-Tests recht einfach machen weil sie von Instanzen beliebiger Klassen (Mock) aufgerufen werden können. Hauptsächlich jedoch sind Traits die Lösung in Sachen Wiederverwendbarkeit von CODE.
Ein Trait ist ein Begriff aus der objektorientierten Programmierung und beschreibt eine wiederverwendbare Sammlung von Methoden und Attributen, ähnlich einer Klasse. Desweiteren können diese Methoden von Instanzen beliebiger Klassen benutzt werden. Ein Trait selbst ist nicht instanziierbar.
Diese Definition sagt eigentlich alles. Und so einfach wie sie sich anhört ist sie auch umzusetzen.