/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Factory: De 3 inkarnationer
Fra : Casper B


Dato : 11-05-05 19:35

Der kendes 3 inkarnationer af mønstret; simple, method og abstract.

De har alle det tilfælles, at objekt instantiering flyttes fra konkret
til abstrakt. Hver gang du i kode benytter "new", koder du op imod en
konkret klasse hvilket kan skabe problemer med modellérbare "real-world"
objekter.

- Simple Factory / Static Factory:
   Med konkrete implementationer spredt rundt i koden, bliver
vedligeholdelse et problem og du kan ikke bare lige erstatte med et
andet objekt. Ved at lave konstruktøren af et objekt "private"
forhindrer du at kode bruger "new" direkte på den. Istedet laver du en
dedikeret statisk metode som opretter et nyt objekt og returnerer
instansen til dig.

- Factory Method:
   Definerer et interface (eller abstrakt klasse) for instantiering af
objekter og lader sub-klasser bestemme (via polymorfisme) hvilken
konkret klasse der skal instantieres ligesom du kan smide argumenter med
og benytte disse. Denne løsere kobling giver væsentlig flere mulighedder
end den simple factory.

- Abstract Factory:
   Den mest avancerede version baserer sig også på interfaces, men gør det
muligt via komposition, at kæde objekt familier sammen UDEN at du
behøver specificere deres konkrete klasser/implementationer. Den er
måske lidt svær at forstå, tænk på denne som et "framework" for
relaterede klasser i et hieraki som alle har forskellige implementationer.

Ellers kan jeg anbefale bogen "Head First Design Patterns", du kan også
bare nøjes med at se deres eksempler som downloades fra
http://www.wickedlysmart.com/HeadFirst/HeadFirstDesignPatterns/HeadFirstPatternsIndex.html

/Casper Bang

 
 
Søg
Reklame
Statistik
Spørgsmål : 177438
Tips : 31962
Nyheder : 719565
Indlæg : 6408041
Brugere : 218879

Månedens bedste
Årets bedste
Sidste års bedste