|
| Observer pattern... Fra : Rune Klausen |
Dato : 23-07-04 03:17 |
|
Hejsa jeg søger en god gennemgang af Observer pattern da jeg har søgt en del
uden at finde nogle helt vildt gode eksempler.
Jeg har forstået teorien bag, men mangler kode eksempler gerne java filerne
så jeg kan se helt præcis hvordan det kan implementeres...
-Rune
| |
Peter Kjellerup Rasm~ (23-07-2004)
| Kommentar Fra : Peter Kjellerup Rasm~ |
Dato : 23-07-04 13:49 |
| | |
Soren Kuula (25-07-2004)
| Kommentar Fra : Soren Kuula |
Dato : 25-07-04 21:55 |
|
Rune Klausen wrote:
> Hejsa jeg søger en god gennemgang af Observer pattern da jeg har søgt en del
> uden at finde nogle helt vildt gode eksempler.
Swing er propfyld med den slags. Alle add...Listner metoderne, alle
implementationer af diverse ..Listener interfaces, og alle extensions af
EventObject (hedder det vist) er efter Observer modellen.
> Jeg har forstået teorien bag, men mangler kode eksempler gerne java
filerne
> så jeg kan se helt præcis hvordan det kan implementeres...
Hvis du finder et kodeeksempel i en Swing tutorial, hvor der sker noget
når du trykker på en knap ell. l., så er det hvad du leder efter.
Forresten er det IMHO et slam-pattern i mange henseender. Der opstår
nemt event cykler, specielt hvis man har mere end en viewkomponent på en
model. Eksempel:
En editerbar JComboBox med afgiver et event (TextEvent) når der
editeres. Jeg implementerer noget sådan at valgmulighederne i boxen
indskrænkes efterhånden som en søgestreng indtastes (det hedder
forresten Continous Filter user interaction pattern). Men nogen gange
giver denne udskiftning af comboboxens models indhold anledning til en
ny selektion, og det giver anledning til at en ny tekst bliver sat ind i
det editerbare tekstfelt. Det giver så anledning til ... forfra osv.
lige til eksekutionsstakken løber over.
Det er heller ikke sjovt at lave dynamisk konfigurerede UIs med Observer
pattern - der kan nemt opstå memory leaks hvis man ikke husker at fjerne
en komponent man ønsker at smide væk som listener overalt hvor den er
registreret.
Jeg har i hvert fald set masser ekspemler på projekter der blev
skamferet pga. problemer med Observer. Det er selvfølgelig værd lige at
lære, men i øvrigt ville jeg undgå det :)
MVH
Søren
| |
Rune Klausen (26-07-2004)
| Kommentar Fra : Rune Klausen |
Dato : 26-07-04 12:24 |
|
"Soren Kuula" <dongfang-remove_this@remove_this-bitplanet.net> wrote in
message news:f6VMc.27351$Vf.1519471@news000.worldonline.dk...
> Jeg har i hvert fald set masser ekspemler på projekter der blev
> skamferet pga. problemer med Observer. Det er selvfølgelig værd lige at
> lære, men i øvrigt ville jeg undgå det :)
Ok, hvad ville du så gøre i stedet for ?
-Rune
| |
Soren Kuula (02-08-2004)
| Kommentar Fra : Soren Kuula |
Dato : 02-08-04 22:30 |
|
Rune Klausen wrote:
>>Jeg har i hvert fald set masser ekspemler på projekter der blev
>>skamferet pga. problemer med Observer. Det er selvfølgelig værd lige at
>>lære, men i øvrigt ville jeg undgå det :)
> Ok, hvad ville du så gøre i stedet for ?
Ja, det ved jeg ikke helt endnu !!
Men man kunne måske sætte sig ned og tænke lidt over et framework der
bruger grafer (altså datastrukturen, ikke den slags "grafer" til at
visualsere mat. funktioner) til at propagere opdateringer. Det skal
selvfølgelig altsammen tænkes igennem og prøves af, men jeg tror at en
højere abstraktion til event propagation end Observer ville være godt i
mange sammenhænge.
Konkret, hvis du bare skal have lavet noget lige nu: Stadig Observer.
MVH
Søren
| |
Soren Kuula (02-08-2004)
| Kommentar Fra : Soren Kuula |
Dato : 02-08-04 22:36 |
|
> Konkret, hvis du bare skal have lavet noget lige nu: Stadig Observer.
Hvis du har en samling af X komponenter der er forbundet på kryds og
tværs med Observer, overvej om der kunne laves noget smart med en
central Observer for allesammen, og forbyd at de underordnede
komponenter er hinandens observere. Det giver vist (sammen med nogle
kontrolvariabler) en pæn mulighed for at
- lave en overordnet metode til at fjerne en komponent som Observer overalt
- kvæle event cycles
Min ide fra før er så: Generaliser dette.
MVH
Søren
| |
Rune Klausen (06-08-2004)
| Kommentar Fra : Rune Klausen |
Dato : 06-08-04 19:06 |
|
"Soren Kuula" <dongfang-remove_this@remove_this-bitplanet.net> wrote in
message news:ftyPc.28966$Vf.1729446@news000.worldonline.dk...
> > Konkret, hvis du bare skal have lavet noget lige nu: Stadig Observer.
>
> Hvis du har en samling af X komponenter der er forbundet på kryds og
> tværs med Observer, overvej om der kunne laves noget smart med en
> central Observer for allesammen, og forbyd at de underordnede
> komponenter er hinandens observere. Det giver vist (sammen med nogle
> kontrolvariabler) en pæn mulighed for at
>
> - lave en overordnet metode til at fjerne en komponent som Observer
overalt
>
> - kvæle event cycles
>
> Min ide fra før er så: Generaliser dette.
Det lyder ikke helt tosset :)
-Rune
| |
|
|