title: Factory (ontwerppatroon)
text: 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 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.
  
  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 is een creatiepatroon.
  
  Voorbeeld 
  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 
  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
  
  Externe links 
   Factory method in UML and in LePUS3 (een formele modelling-taal)
   Description from the Portland Pattern Repository
   Jt J2EE Pattern Oriented Framework
   design-patterns-factory-method-pattern example (voorbeeld voor C#-programmeurs)
  
  Ontwerppatroon