@ prototype
hoezo hardcoden? je gebruikt een addressof van een
runtime instance methode als delegate
en dat een refactorisatie meteen de boel in duigen laat vallen klopt niet
de methode signature moet nog steeds exact hetzelfde zijn om te kunnen delegeren.
en dependencies zijn er juist
minder omdat je niks te maken hebt met inheritance of interfaces.
Volgens mij verwar jij de VB delegate class met het composite of adapter patroon.
VB delegates zijn meer pointers zoals je in C of C++ hebt en zitten meer in het gebied van een taal feature, dan dat het een abstract model/patroon ding is (dat je de AddressOf operator moet gebruiken is een wel heel duidelijke hint in die richting)
delegates moet je zien als een goed hulpmiddel bij het efficient implementeren van het Command patroon naar mijn idee (en ja, ik heb ook het witte/blauwe boek met de wit/blauwe touwtjes

voor de mensen die hier niks van snappen zie
hier, een must om te lezen voor iedere OO devver)
@ whoami m'n offtopic was niet echt serieus bedoeld, tis maar hoe je tegen de definitie van statefull/stateless aankijkt, is alles wat ik bedoelde te zeggen
en ik heb nu allemaal lampen als voorbeeld genomen en dan is subclassing of een interface idd de betere oplossing, maar ik had ook als delegerende methode Iets.aan() en Motor, Lamp, Vuurtje, en ManVrouwRelatie als delegates kunnen nemen, en dan worden subclasses en interfaces ineens een heel stuk lastiger te definieren.
en de bedoeling van m'n verhaal was het principe van delegates uitleggen en de voordelen
vanuit het perspectief van delegates.
(en eerlijk gezegd ben ik ook voorstander van subclassing en vooral interfaces, al was het alleen al omdat de compiler dan meer van mijn fouten vangt, zodat ik veel minder hoef te debuggen, en laten we eerlijk zijn, debuggen sucks monkeyballs)
btw ik heb ff snel de demo gecode, om het voorbeeld met wat code te illustreren
een selfextracting zipje van een project gemaakt in VB.net 2005 express beta
kan eenieder
hier downen
voor de lol moet je ook eens zoeken naar het if statement
dat selecteert welke lamp er aan of uit moet
spoiler:die is er dus niet, alleen if-jes voor foutafvanging en
in 2 van de concrete lampen voor het zetten van de juiste state.
edit:
ik heb er nog even over zitten denken, en volgens mij zit het nut van delegates
niet zozeer in het makkelijk aan elkaar knopen van objecten
maar in het flexibel runtime veranderen van het gedrag
van 1 bepaald object zonder dat je
enorme if-bomen of switch statements in hoeft te bouwen
een hele goede toepassing van delegates is te vinden in event-handlers van b.v. buttons
met het gebruik van delegates kan je heel makkelijk de functie van een klik op een button veranderen zonder dat de code die je daarvoor moet schrijven uit de klauwen loopt of inefficient wordt
[
Voor 84% gewijzigd door
Verwijderd op 24-01-2005 22:53
]