Grunzer Logo (Piggy Nose) grunzer

Software Pattern

In der Softwarentwicklung und insbesondere in der objektorientierten Programmierung haben sich verschiedene Schemen herausgebildet, mit welcher sich oft auch komplizierte Aufgaben einfach lösen lassen. Diese nennen wir hier Pattern.

Mit gängigen Pattern zu arbeiten hat auch den Vorteil, dass die Lesbarkeit des Codes erhöht wird, ein geschulter Programmierer erkennt die verwendeten Muster wieder und kann diese sofort einordnen und damit arbeiten. Wird das Rad jedoch neu erfunden, so muss ein Entwickler zunächst eine tiefere Analyse des Codes vornehmen, um die Umsetzung zu verstehen.

In der Praxis werden Pattern wie Dependency Injection, Singletons etc. auch in Frameworks verankert, sodass der Programmierer dazu angehalten ist, diese zu verwenden. Die Gefahr eines Wildwuchses von verschiedenen Programmierstilen ist damit etwas geringer.

Strategy Pattern

Das Strategy-Pattern wird dafür genutzt, um für eine Problemlösung verschiedene Lösungswege zu definieren. Hier am Beispiel wird für die Aktivität run verschiedene konkrete Strategien definiert. Diese implementieren das entsprechende Interface RunStrategy. Die Auswahl des passenden Lösungswegs erfolgt dann im jeweiligen Context. Dort kann im Attribut runStrategy eines der 3 konkreten Strategien gesetzt werden.

RunStrategy run(): void FastRunner SlowRunner NormalRunner Context runStrategy: RunStrategy

Builder Pattern

Das Builder-Pattern vereinfacht die Erstellung von komplexen Objekten, die einzelnen Attribute werden über aneinandergehängte Methoden gesetzt statt über einzelne Zuweisungen.

Rectangle width: number height: number builder(): RectangleBuilder RectangleBuilder width(value: number): RectangleBuilder height(value: number): RectangleBuilder build(): Rectangle

Beispiel:

Rectangle rectangle = Rectangle.builder()
  .width(200)
  .height(50)
  .build()