JavaSvet - otvorena java zajednica

 
glavna stranica arr2javasvet  english version arr2java.net

Factory Method

Igor Spasić
25 Jun 2004

Definicija

Factory Method patern definiše interfejs za kreiranje objekata, gde se odluka koja koja se klasa kreira donosi u implementaciji interfejsa.

Opis

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.

UML dijagram

Učesnici

  • Creator - definiše abstraktni factory metod i sadrži metode za rad sa produktom
  • ConcreteCreator - implementira metod za kreiranje konkretnog produkta
  • Product - definiše interfejs za objekte tipa produkta
  • ConcreteProduct - implementira konkretni produkt sa kojim radi kreator
  • Client - korisnik interejsa definisanog u Creator klasi
  • Primer

    Primer koji se može downloadovati prikazuje jednostavno korišćenje Factory Method paterna.