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