| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | 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
 
 
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |