Java Reference
In-Depth Information
Ein aktiver Filter stellt einen eigenständigen parallelen Prozess 81
dar. Ein aktiver Filter ist der typische Fall. Er wird von einem über-
geordneten Programm aufgerufen und läuft immer als parallele
Einheit.
Aktive Filter sind vom Betriebssystem Unix bekannt. Sie holen ihre Eingabedaten aus
der dem Filter aus Sicht des Datenflusses vorangehenden Pipe und senden ihre Aus-
gabedaten in die dem Filter aus Sicht des Datenflusses nachfolgende Pipe. Eine Pipe
entkoppelt - wie bereits erwähnt - benachbarte aktive Filter asynchron.
Aktive Filter sind leichter zu kombinieren als passive Filter. Ein aktiver Filter liest und
verarbeitet seine Eingabedaten kontinuierlich. Mit der Ausgabe von Daten als Daten-
strom wird nach Möglichkeit sofort begonnen, ehe die Eingabe vollständig gelesen ist.
Die Bearbeitung der eingelesenen Daten und die Ausgabe der entsprechenden er-
zeugten Daten erfolgt stückweise, wenn der eingehende Datenstrom stückweise verar-
beitet werden kann. Damit kann zum einen die Latenzzeit verkürzt werden und zum
anderen eine gewisse Parallelität erzeugt werden, wenn Filter schon Teilergebnisse
liefern, ehe sie fertig sind.
Es gibt auch passive Filter , die von einem dem passiven Filter
benachbarten Filterelement aufgerufen und damit aktiviert wer-
den. Passive Filter, die erst durch einen Aufruf eines diesem Filter
benachbarten Filterelements aktiviert werden, sind nicht typisch.
Ein passiver Filter wird nach dem Push-Prinzip von seinem Vorgänger zum Übergeben
von Daten oder nach dem Pull-Prinzip von seinem Nachfolger zum Abholen von Daten
aufgerufen.
Die bisherige Lösungsbeschreibung des Musters Pipes and Filters nutzte an keiner
Stelle spezielle objektorientierte Möglichkeiten. Daraus kann man schließen, dass das
Muster sehr gut auch nicht objektorientiert realisiert werden kann. Im Folgenden wird
jedoch eine objektorientierte Lösung vorgestellt und zunächst das Muster Pipes and
Filters mittels eines Kommunikationsdiagramms skizziert. Anschließend werden die
Teilnehmer vorgestellt. Das anschließende Unterkapitel verdeutlicht das dynamische
Verhalten.
5.2.3.1 Kommunikationsdiagramm
Anstelle eines sonst hier üblichen Klassendiagramms wird im Folgenden ein Kommu-
nikationsdiagramm nach UML für Objekte vom Typ Datenquelle , Pipe , Filter
und Datensenke gezeigt, wobei hier nur ein einziger Filter dargestellt ist. Es ist ein
sogenanntes Kommunikationsdiagramm der Analyse (nach [Gol12]), in dem nur die
Nachrichten und noch nicht die Methodenaufrufe eingetragen sind. Das Kommuni-
81 Betriebssystem-Prozess oder Thread.
Search WWH ::




Custom Search