Vom Pattern zum Anti-Pattern?
Wenn man das GoF-Buch heute liest, sind einige der dort beschriebenen Patterns inzwischen fast zu Anti-Patterns geworden. Ein Beispiel ist Singleton. Während die ursprüngliche Idee, ein Objekt nur einmal zu instanziieren, nicht schlecht ist, ergibt sich gleichzeitig ein Problem: Das Singleton ist überall im Code bekannt und kann verwendet werden, ohne dass man dies von außen erkennen kann. Dadurch wird Testing und isolierte Wiederverwendbarkeit schwierig.
Noch entscheidender ist meiner Ansicht nach die Factory. Das Pattern hat früher die Erstellung eines konkreten Produkte vor dem aufrufenden Objekt versteckt. Grundsätzlich keine schlechte Idee, aber inzwischen weiß ich nicht mehr genau, wieviele Factories ich schon gebaut habe und wenn man dann testen will, muss man die Factories so bauen, dass man auch andere Produkte erzeugen lassen kann (Mocks).
Durch Dependency Injection lassen sich diese Themen natürlich lösen, was aber hier nicht Thema sein soll. Viel interessanter ist die Frage, ob das GoF Buch heute immer noch so geschrieben werden würde. Und ob nicht eben Patterns wie Factory oder Singleton inzwischen sogar Anti-Patterns sind.
J for Java |
I for Internet, iMac, iPod and iPad |
Me for me