[[oktatas:programozás:tervezési minták|< Tervezési minták]]
====== Gyártó metódus ======
* **Szerző:** Sallai András
* Copyright (c) Sallai András, 2014
* Licenc: GNU Free Documentation License 1.3
* Web: http://szit.hu
===== Használat =====
Akkor használjuk ha nem tudjuk milyen példányok jönnek létre.
===== Az állatgyár példa =====
{{:oktatas:programozás:tervezési_minták:gyarto_metodus.png|}}
interface Allat {
public void beszel();
}
class Macska implements Allat {
public void beszel() {
System.out.println("Miau");
}
}
class MacskaGyar {
public static Macska newMacska() {
return new Macska();
}
}
class Program01 {
public static void main(String[] args) {
Macska cirmos = MacskaGyar.newMacska();
cirmos.beszel();
}
}
===== Macska és kutya =====
{{:oktatas:programozás:tervezési_minták:allatgyartohatekonyabban.png}}
===== Egyetlen gyártó =====
{{:oktatas:programozás:tervezési_minták:allatgyartohatekonyabban2.png}}
enum AllatFajta {
MACSKA, KUTYA
}
interface Allat {
public void beszel();
}
class Macska implements Allat {
public void beszel() {
System.out.println("Miau");
}
}
class Kutya implements Allat {
public void beszel() {
System.out.println("Vauu");
}
}
class AllatGyar {
public static Allat newAllat(AllatFajta allatFajta) {
if(allatFajta == AllatFajta.MACSKA)
return new Macska();
if(allatFajta == AllatFajta.KUTYA)
return new Kutya();
return null;
}
}
class Program01 {
public static void main(String[] args) {
Allat allat = AllatGyar.newAllat(AllatFajta.MACSKA);
allat.beszel();
}
}
===== Szokásos metódusnevek =====
Általánosan használt statikus metódusok:
* valueOf() átadott paraméterrel egyenértékű objektummal tér vissza
* newInstance() készít egy új példányt gyártómetódusból, amelyet meghívunk
* getInstance() egy Singleton példánnyal tér vissza
* getType() egyenértékű a getInstance() metódussal, de külön osztályban van
* newType() egyenértékű a newInstance() metódussal, de külön osztályban van