Entwurfsmuster in Smalltalk, Java & ObjectPascal

Das Thema Entwurfsmuster gehört für einen Entwickler, der sich ernsthaft mit objektorientierten Sprachen beschäftigt, heutzutage sicherlich zum Standardrepertoire. Phrasen wie “Nimm doch eine Fabrik” oder “Sollte ich das mit einem Builder machen?” erleichtern den Umgang mit abstrakten Ideen hinter konkreten Entwürfen bei der täglichen Kommunikation.

Nun, solche Muster werden in der Regel verwendet, weil die zugrundeliegende Sprache gewisse Strukturen selbst nicht bietet. Wie sieht es dann aber mit der Implementierung aus? Sehen die Implementierungen eines Musters in allen objektorientierten Sprachen so aus wie in der einschlägigen Literatur? Lassen sich einzelne Muster in bestimmten Sprachen besser, schlechter oder einfach nur eleganter umsetzen?

Im Jahre 2005 hatte ich gegen Ende meines Studiums dazu in dem Kurs “Moderne Softwaretechnologien” einen Vortrag und später eine Semesterarbeit erstellt, die sich genau mit diesen Fragen beschäftigt.

Was macht eigentlich ein Smalltalker wenn er einen Vermittler (Mediator) implementieren möchte? Und wie sieht es im Vergleich dazu mit einem Java-Entwickler oder einem Delphianer aus? Unterschiedliche Sprachen bieten mit ihren speziellen Fähigkeiten oft ganz besondere Möglichkeiten, ein Problem elegant zu lösen. Während man in Delphi Methodenzeiger halten kann, verwendet der Java-Entwickler häufig anonyme Klassen, die minimale Schnittstellen erfüllen. In Smalltalk hingegen stehen Closures hoch im Kurs. Mit diesen Unterschieden beschäftigt sich knapp der Vortrag auf 34 Seiten und geht dabei auf den Vermittler und das Singleton (aus heutiger Sicht halte ich das nicht für ein lehrenswertes Muster, aber es ist schön einfach zu erläutern) ein.

Die Semestarbeit zu diesem Themenkomplex beschäftigt sich hingegen ausschließlich mit Spezifika der Sprache ObjectPascal.

Dabei wurden Besonderheiten des Speichermanagements bei der Referenzzählung von Interfaces diskutiert. So können beispielsweise Iteratorobjekte verwendet werden, ohne den Lebenszyklus dieser leichtgewichtigen Objekte mit try..finally-Blöcken aufwendig kontrollieren zu müssen. Über den Einsatz von virtuellen Klassenmethoden und Konstruktoren kann das klassische Fabrikmuster in Delphi elegant gelöst werden. Außerdem vertieft die Arbeit den Einsatz von Methodenzeigern und zeigt so, dass die Idee von Kommandos elementar in die Sprache ObjectPascal integriert wurde.

Downloads

Support my Work

Writing an article like the one you have just read takes me quite an amount of my personal time. Way too often, I invest this time in different interests and decide against another blog post. On the other hand, you can motivate me with your feedback, your thoughts and your ideas. Please leave a comment below or flattr this post if you think it's worth it.

Comments

  1. Timo says:

    Ahhh bekannter Content … Schön das so was mal online ist!

Leave a Reply