Plugin (Entwurfsmuster)

Das Plugin (deutsch: Steckmodul) ist ein Entwurfsmuster aus dem Bereich der (objektorientierten) Softwareentwicklung[1] und gehört zu der Kategorie der Verhaltensmuster (Behavioural Patterns). Es dient der Institutionalisierung (klaren Aufteilung) von öffentlichen (engl. public) Teilen der Software (i. d. R. Klassen/Methoden), die vom Nutzer der Software verwendet werden dürfen (veröffentlichte Teile) und welche die nicht verwendet werden sollen. Die Verwendung ist oft eine Erweiterung im Sinne von "Funktionalität hinzufügen". Ein Plugin besteht aus einem Erweiterungspunkt (engl. extension point) und einer oder mehreren nutzenden Erweiterung (engl. extensions).

Verwendung

Plugins werden vor allem in Basissoftware (Frameworks, Menge von Basisklassen) eingesetzt. Generell empfiehlt sich die Verwendung von Plugins, wenn man die Software anderen Softwareentwicklern zur Einbindung zur Verfügung stellen möchte. Ein Plugin definiert, welcher Teil benutzt und wie dieser Teil erweitert werden darf.

Ein Vorteil ist, dass die Basissoftware in den nicht veröffentlichten Bereichen problemlos weiterentwickelt werden kann. Die Art der Nutzung oder Erweiterung der Basissoftware wird standardisiert und damit leichter austauschbar.

Ein Nachteil ist, dass das Plugin extra beschrieben werden muss. Plugins schränken die Erweiterungsmöglichkeiten ein und sind in der Programmierung performance-intensiver.

Beispiele

Die Basissoftware ist eine Personenverwaltung, mit der Personen und ihre Adressen erfasst/geändert/gelöscht werden können. Die Basissoftware stellt zwei Plugins mit den Erweiterungspunkten "Person_anlegen" und "Person_ändern" zur Verfügung.

Die Basissoftware soll in einem Judosportverein eingesetzt werden. Der beauftragte Softwareentwickler nutzt den Erweiterungspunkt "Person_anlegen" mit einer Erweiterung für die Erfassung des Eintrittjahres in den Verein. Der beauftragte Softwareentwickler nutzt den Erweiterungspunkt "Person_ändern" mit einer Erweiterung für die Dokumentation einer bestandenen Gürtelprüfung. Ferner nutzt der beauftragte Softwareentwickler den Erweiterungspunkt "Person_ändern" auch mit einer Erweiterung für die Dokumentation der Änderung der Gewichtsklasse. Der beauftragte Softwareentwickler hat aber keine Möglichkeit den Vorgang des <Person löschen> zu beeinflussen bzw. zu erweitern.

Ein bekanntes Beispiel für ein Plugin-basiertes Framework ist z. B. Eclipse, eine in Java geschriebene IDE.

Einzelnachweise

  1. Martin Fowler, David Rice, Matthew Foemmel, Edward Hieatt, Robert Mie, Randy Stafford: Patterns of Enterprise Application Architecture. Addison-Wesley, 2002, ISBN 0-321-12742-0.