• Keine Ergebnisse gefunden

2Java-Code 1Designprinzip DesignPattern:Observer(Beobachter)

N/A
N/A
Protected

Academic year: 2022

Aktie "2Java-Code 1Designprinzip DesignPattern:Observer(Beobachter)"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Softwaretechnik http://kohnlehome.de/informatik/observer.pdf

Design Pattern: Observer (Beobachter)

1 Designprinzip

Bei ¨Anderung des Zustands (bzw. der Daten) des Subjekts werden alle Beobachter benachrichtigt.

Das Subjekt braucht die Struktur der Beobachter nicht zu kennen.

Es gibt zwei Varianten:

• PUSH: Die Daten werden bei der Benachrichtigung der Beobachter gleich mitgeliefert.

• PULL: Die Nachricht vom Subjekt an die Beobachter enth¨alt noch nicht die Daten, sondern nur die Nachricht, dass sich diese ge¨andert haben. Die Beobachter m¨ussen dann selbst die von ihnen ben¨otigten Daten anfordern.

2 Java-Code

2.1 Subject (Observable)

public c l a s s S u b j e c t {

// M e m b e r v a r i a b l e n f u e r Daten private i n t d a t e n = 0 ;

// L i s t e von B e o b a c h t e r n

private A r r a y L i s t<B e o b a c h t e r S c h n i t t s t e l l e> b e o b a c h t e r

= new A r r a y L i s t<B e o b a c h t e r S c h n i t t s t e l l e>( ) ;

// B e o b a c h t e r muessen s i c h r e g i s t r i e r e n

public void r e g i s t r i e r e n ( B e o b a c h t e r S c h n i t t s t e l l e b ){ b e o b a c h t e r . add ( b ) ;

}

// a l l e B e o b a c h t e r e r h a l t e n Aenderungsmeldung private void b r o a d c a s t ( ){

f o r (i n t i = 0 ; i < b e o b a c h t e r . s i z e ( ) ; i ++) { b e o b a c h t e r . g e t ( i ) . update ( ) ;

// b e i PUSH: Daten a l s Argumente u e b e r g e b e n }

}

// Methoden zum L e s e z u g r i f f a u f Daten b e i PULL public i n t g e t D a t e n ( ) {

return d a t e n ; }

// B r o a d c a s t b e i Aenderung d e r Daten public void s e t D a t e n (i n t n ) {

d a t e n = n ; b r o a d c a s t ( ) ; }

}

Franz Kohnle Seite 1 von 2 5. November 2017

(2)

Softwaretechnik http://kohnlehome.de/informatik/observer.pdf

2.2 Beobachterschnittstelle (Observer)

public i n t e r f a c e B e o b a c h t e r S c h n i t t s t e l l e {

public void update ( ) ; // Bei PUSH: Daten a l s Parameter }

2.3 Konkrete Beobachter

public c l a s s BeobachterA implements B e o b a c h t e r S c h n i t t s t e l l e{ private S u b j e c t s u b j e c t ;

public BeobachterA ( S u b j e c t s u b j e c t ) { t h i s. s u b j e c t = s u b j e c t ;

s u b j e c t . r e g i s t r i e r e n (t h i s) ; }

@Override

public void update ( ) {

// b e i PUSH: Daten werden a l s Parameter u e b e r g e b e n // b e i PULL : Daten muessen e x t r a g e h o l t werden i n t d a t e n = s u b j e c t . g e t D a t e n ( ) ;

System . o ut . p r i n t l n ( ”A: ” + d a t e n ) ; }

}

public c l a s s BeobachterB implements B e o b a c h t e r S c h n i t t s t e l l e{ private S u b j e c t s u b j e c t ;

public BeobachterB ( S u b j e c t s u b j e c t ) { t h i s. s u b j e c t = s u b j e c t ;

s u b j e c t . r e g i s t r i e r e n (t h i s) ; }

@Override

public void update ( ) {

// b e i PUSH: Daten werden a l s Parameter u e b e r g e b e n // b e i PULL : Daten muessen e x t r a g e h o l t werden i n t d a t e n = s u b j e c t . g e t D a t e n ( ) ;

System . o ut . p r i n t l n ( ”B : ” + d a t e n ) ; }

}

2.4 Verwendung des Subjekts

S u b j e c t s u b j e c t = new S u b j e c t ( ) ;

BeobachterA b e o b a c h t e r A = new BeobachterA ( s u b j e c t ) ; BeobachterB b e o b a c h t e r B = new BeobachterB ( s u b j e c t ) ; s u b j e c t . s e t D a t e n ( 5 ) ; // Ausgabe : ”A: 5 B: 5 ”

Literatur

[Head First Design Patterns] http://www.oreilly.de/catalog/9780596007126/

[Wikipedia] http://de.wikipedia.org/wiki/Observer_(Entwurfsmuster)

Franz Kohnle Seite 2 von 2 5. November 2017

Referenzen

ÄHNLICHE DOKUMENTE

[r]

[r]

: ' 532 Provision und Entschädigung für Erwerbsausfall 532 Kündigung des Agenturvertrags 533 Die Geschäftsführung ohne Auftrag 534 Echte Geschäftsführung ohne Auftrag 536

in der Architektur weicht der Funktionalismus Ornamentalismus, Eklektizismus und einem immer neuen Heranzitieren von bereits Bekanntem; die postmoderne Kunst scheint mit dem

1 festangestellter Mitarbeiter mit Zertifizierung vom angebotenen Hersteller für die Programmierung von Steuerungszentralen Hinweis: Den Nachweis über die Einrichtung

„Aber es ist ja alles nur gelie- hen! Das Geld wird zurückge- zahlt, Griechenland hat immer zurückgezahlt, immer, immer!“, besänftigen uns unsere Politiker, wobei ihre Stimmen von

4 Werst vor der Stadt fortzusetzen.. Hier hatten sich unter Anführung Sr. Excel!, des Herrn General-Gouverneurs, die in und bey Riga der Zeit befindlichen

Es wird dadurch deutlich gemacht, daß diese Re-Kontextualisierung wie eine Überschrift oder ein Titel funktioniert, der Bild und Text in einen bestimmten. ‘universe of