Simple factory method (jednoduchá (statická) tovární metoda) je návrhový vzor, který je alternativou volání konstruktoru, jemuž se za určitých okolností chceme vyhnout.

Hlavní nevýhodou volání konstruktoru je nevyhnutelná konstrukce nového objektu. Můžeme například chtít pracovat pouze s jednou instancí v rámci celé aplikace (tzv. Singletonem) a očekáváme, že dostaneme buď nový objekt (pokud žádná instance neexistuje), nebo při každém dalším volání onu jednu a tu samou instanci.

Tento vzor také použijeme v situaci, kdy nechceme být omezeni pouze na konstrukci konkrétního typu objektu, ale chceme mít možnost vracet také jeho podtypy (potomky).


Příklad

Třída zaměstnanec při zavolání tovární metody vrátí novou instanci - tou může být kterýkoliv z potomků třídy zaměstnanec (ředitel, uklízečka, sekretářka).

 
 /**
  * Priklad pro navrhovy vzor Simple factory method
  * @author Pavel Micka
  */
 abstract class Employee {
     /**
      * Vrati nahodneho (noveho) zamestnance firmy
      * @return
      */
     public static Employee getEmployee() {
         Random r = new Random(System.currentTimeMillis());
         int random = r.nextInt(3); // <0;3)
         if (random == 0) return new Director();
         else if (random == 1) return new Secretary();
         else return new CleaningWoman();
     }
     /**
      * Vrati pozdrav s informaci o zamestnani
      * @return pozdrav
      */
     public abstract String sayHello();
 
     private static class Director extends Employee {
         @Override
         public String sayHello() {
             return "Ahoj, ja jsem reditel a beru ze vsech nejvyssi plat";
         }
     }
     private static class Secretary extends Employee {
         @Override
         public String sayHello() {
             return "Cau, ja jsem sekretarka a umim varit dobre kafe";
         }
     }
     private static class CleaningWoman extends Employee {
         @Override
         public String sayHello() {
             return "Ja jsem uklizecka a jako jedina tu skutecne pracuji...";
         }
     }
 }
 

Literatura

  • PECINOVSKÝ, Rudolf. Návrhové vzory. 1. vyd. [s.l.] : Computer press, 2007. 527 s. ISBN 978-80-2511582-4.







Doporučujeme