Zum Inhalt springen

Plugin (Entwurfsmuster)

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 26. Juni 2024 um 22:03 Uhr durch imported>Janek Zeiger (Beispiele: Wiederholung entfernt).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Vorlage:Hinweisbaustein

Das Plugin (deutsch: Steckmodul) ist ein Entwurfsmuster aus dem Bereich der (objektorientierten) Softwareentwicklung<ref>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.</ref> und gehört zur Kategorie der Verhaltensmuster (Behavioural Patterns). Es dient der Institutionalisierung (klaren Aufteilung) in

  • öffentliche (engl. public) Teile der Software (i. d. R. Klassen / Methoden), die vom Nutzer der Software verwendet werden dürfen (veröffentlichte Teile; diese werden mit dem Plugin beschrieben), und
  • solche Teile der Software, die nicht verwendet bzw. erweitert werden sollen (nicht-öffentliche Teile).

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 Erweiterungen (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 der Software 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. Sie stellt zwei Plugins mit den Erweiterungspunkten "Person_anlegen" und "Person_ändern" zur Verfügung. Die Basissoftware soll in einem Judoverein eingesetzt werden.

Der beauftragte Softwareentwickler

  • nutzt den Erweiterungspunkt "Person_anlegen"
    • mit einer Erweiterung für die Erfassung des Eintrittjahres in den Verein
  • nutzt den Erweiterungspunkt "Person_ändern"
    • mit einer Erweiterung für die Dokumentation der Änderung der Gewichtsklasse und
    • mit einer Erweiterung für die Dokumentation einer bestandenen Gürtelprüfung
  • hat aber keine Möglichkeit den Vorgang <Person löschen> zu beeinflussen bzw. zu erweitern.

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

Einzelnachweise

<references />

<templatestyles src="Erweiterte Navigationsleiste/styles legacy.css" />Vorlage:Klappleiste/Anfang

Erzeugungsmuster

Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool

Strukturmuster

Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter

Verhaltensmuster

Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel

Muster für objekt-
relationale Abbildung

Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation

Nachrichten-
übermittlungsmuster
andere

Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object

Vorlage:Klappleiste/Ende