Factory (ontwerppatroon)

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
Factory method in UML.

In objectgeoriënteerde programmeertalen is het factory-ontwerppatroon een manier om objecten te instantiëren zonder exact vast hoeven te leggen van welke klasse deze objecten zullen zijn. In dit patroon wordt een methode (de factory-methode) gebruikt die door subklassen geïmplementeerd kan worden. De klasse van het object die door die methode geïnstantieerd wordt, implementeert een bepaalde interface. Elk van de subklassen kan vervolgens bepalen van welke klasse een object wordt aangemaakt, zolang deze klasse maar die interface implementeert.

Het doel van een dit ontwerppatroon is het vereenvoudigen van het onderhoud van het programma. Als er nieuwe subklassen nodig zijn dan hoeft men alleen een nieuwe factory-methode te implementeren.

Factory is een creatiepatroon.

Voorbeeld[bewerken]

Een voorbeeld van een factory in Java:

public interface Voertuig {
	public void rij();
}
 
public class Auto implements Voertuig {
	public void rij(){
		System.out.println("De auto rijdt.");
	}
}
 
public class Fiets implements Voertuig {
	public void rij(){
		System.out.println("De fiets rijdt.");
	}
}
 
public abstract class VoertuigFabriek {
	public abstract Voertuig produceerVoertuig();
}
 
public class AutoFabriek extends VoertuigFabriek {
	public Voertuig produceerVoertuig() {
		return new Auto();
	}
}
 
public class FietsFabriek extends VoertuigFabriek {
	public Voertuig produceerVoertuig() {
		return new Fiets();
	}
}
 
public class Programma {
	public static void main(String[] args) {
		VoertuigFabriek voertuigFabriek = new AutoFabriek();
		Voertuig voertuig = voertuigFabriek.produceerVoertuig();
		voertuig.rij();
 
		voertuigFabriek = new FietsFabriek();
		voertuig = voertuigFabriek.produceerVoertuig();
		voertuig.rij();
	}
}

De uitvoer van dit programma is:

De auto rijdt.
De fiets rijdt.

Andere creatiepatronen[bewerken]

Patronen aangaande mechanismes om in programma's objecten aan te maken.

  • Abstract Factory — Laat een object maken waarvan slechts de basisklasse bekend hoeft te zijn.
  • Builder — Lijkt op een Abstract Factory, maar levert andere producten dan objecten.
  • Prototype — Het maken van objecten door objecten te kopiëren.
  • Singleton — Een klasse heeft slechts één instantie.

Referenties[bewerken]

Externe links[bewerken]