Factory Method patern definiše interfejs za kreiranje objekata, gde se odluka koja koja se klasa kreira donosi u implementaciji interfejsa.
Mehanizam koju pruža Factory Method patern enkapsulira znanje koji se objekat kreira i fizički ga odvaja od mesta gde se zahteva instanca objekta. Za razliku od sličnog Abstract Factory paterna, ovde se instanciranje objekata ne vrši na direktan zahtev klijenta, već se ono dešava "iza scene". Isto tako, Factory Method patern ne stavlja fokus na posrednom korišćenju kreiranih objekata, već upravo na korišćenje samog kreatora - objekta klase koja kreira objekte.
Uobičajen primer za Factory Method patern je slučaj dizajna programskog okruženja (framework) koji radi sa nekoliko tipova objekta (na pr.: različiti tipovi dokumenata u programu), kojima se upravlja na isti način. Na strani korišćenja programer ne zna (i ne treba da zna) kako se koriste ovi dokumenti, jer je programsko okruženje zaduženo za njihovu manipulaciju.
Prvo i najtrivijalnije rešenje ovog problema je kreiranje odgovarajuće instance dokumenta i njeno prosleđivanje metodama programskog okruženja (framework) koji rade sa dokumentom. Ovakvo rešenje možda može da prođe ako smisao ovog primernog programskog okruženja nije manipulacija dokumentima, pa je njihova upotreba sporadična. Međutim, kako je ovde primarna baš manipulacija dokumentima, Factory Method daje daleko elegantnije i upoterbljivije rešenje.
Creator - definiše abstraktni factory metod i sadrži metode za rad sa produktomConcreteCreator - implementira metod za kreiranje konkretnog produktaProduct - definiše interfejs za objekte tipa produktaConcreteProduct - implementira konkretni produkt sa kojim radi kreatorClient - korisnik interejsa definisanog u Creator klasiPrimer koji se može downloadovati prikazuje jednostavno korišćenje Factory Method paterna.