www.patterns-kompakt.de



Kontakt:




www.gernotstarke.de

www.springer-vieweg.de

Master-Slave

Unabhängige Teilaufgaben innerhalb einer Serviceimplementierung werden in separaten Threads ausgeführt (divide and conquer), um nicht-funktionale Anforderungen (i. d. R. Performance) besser zu erfüllen.

siehe: POSA4, PK

Sequenzdiagramm

Beispiel

Im Beispiel wollen wir prüfen, ob ein String ein Palindrom ist, also z.B. aBBa.
Die Aufgabe ist sehr einfach, es muss lediglich geprüft werden, ob ein Text von links nach rechts bzw. von rechts nach links gelesen identisch aussieht.
Wenn man jedoch von UTF-8-kodierten Palindrome mit mehreren 100 Millionen Zeichen ausgeht, wird es interessant.
Bei heutigen Rechnern kann man natürlich immer noch die ganze Datei in den Speicher pumpen und naiv vergleichen. Mit Master-Slave geht es aber effizienter.

Der Master teilt die Aufgabe in Häppchen, deren Abarbeitung Slaves obliegt.

Aus den Teilergebnissen der Slaves leitet der Master das Gesamtergebnis ab.

Übrigens implementiert der IndexedTextFileAccessor, den der Master intern zur Vorbereitung nutzt, selbst ebenfalls das Master-Slave-Pattern.

Um das Zusammenspiel im Detail beobachten zu können, setzen Sie die Variable LOG_LEVEL = Level.FINE im zugehörigen TestCase.

Ressourcen


© 2002-2013 · Dr. Gernot Starke · Email E-Mail schreiben...
Layout inspired by Verena Segert und SELFHTML).
Letzte Änderung 10. März 2013.

Impressum und Ausschluss der Garantie (disclaimer)