Factory (ontwerppatroon)

ontwerppatroon

In objectgeoriënteerde programmeertalen is het factory methode-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 gebruikt die door subklassen geïmplementeerd kan worden. De klasse van het object dat 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.

Factory methode in UML.

Het doel van 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 methode is een creatiepatroon.

Voorbeeld bewerken

Een voorbeeld van een factory methode 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