Folge 2: Separation of Concerns implementieren mit dem „Hook Registry“ Design Pattern

Folge 2: Separation of Concerns implementieren mit dem „Hook Registry“ Design Pattern

In der letzten Folge habe ich das Thema Separatio…
5 Minuten
Podcast
Podcaster

Beschreibung

vor 3 Jahren
In der letzten Folge habe ich das Thema Separation of Concerns
angesprochen. Das Ziel dahinter ist, den Code eines Projekts so
weit voneinander zu trennen, dass man den Aufwand deutlich
reduziert, wenn Änderungen am Code zu machen sind, oder Sachen
wieder rausfliegen oder ersetzt werden sollen. Dazu soll jeweils
der Code, der zu einem Concern - oder auch Feature genannt –
gehört, möglichst beisammen bleiben und nicht mit anderem Code, der
andere Features umsetzt, gemischt werden. Eine relativ einfache
Methode möchte ich euch heute vorstellen, da sie von vielen
Plugin-Systemen wie z.B. der Eclipse IDE, aber auch allen gängigen
Browsern in ihren Plugin-Systemen verwendet werden. Ihr könnt euch
also eine „sauber programmierte Software“ wie ein leeres Programm
vorstellen, bei dem jedes Feature wie durch ein Plugin jederzeit
hinzufügbar – oder entfernbar ist. Die Rede ist von der
Hook-Registry. Dabei handelt es sich um ein zentrales Register an
Hooks, also Callbacks, die zu einem bestimmten Zeitpunkt zu einem
bestimmten Zweck aufgerufen werden. Um es etwas plastischer zu
machen, nehme ich das Menüsystem zum Beispiel. Angenommen, die
Software hat ein Hauptmenü mit den Menüpunkten Datei, Bearbeiten,
Ansicht, Fenster und Hilfe mit ihren jeweiligen Unterpunkten: Datei
Neu Öffnen Schließen Beenden. In schlecht organisierter Software
gibt es jetzt einen zentralen Punkt, wo die Menüs aufgebaut werden:
Die Liste mit Menüeinträgen muss vollständig sein und verweist auf
Funktionen quer durch die Software. Anschließend sind die Aktionen
hinter den Menüeinträgen in den einzelnen Dateien ausimplementiert.
Warum ist das schlecht? Naja jedes mal, wenn jemand ein neues
Feature hinzufügen will oder entfernen muss, muss er nicht nur die
Dateien anfassen, die das eigentliche Feature implementieren,
sondern zusätzlich noch eine handvoll zentraler Dateien (wie der
Menü-Aufbau-Code oder eine Initialisierungs-Routine oder eine große
If-Kaskade, in der nochmals alle vorhandenen Features aufgelistet
sind), anfassen. Vergisst man eine dieser Stellen, macht man die
Software kaputt oder hinterlässt funktionslose Menüpunkte.

Kommentare (0)

Lade Inhalte...

Abonnenten

15
15
:
: