Factory (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.
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 | brontekst 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 | brontekst 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 | brontekst bewerken]- Fowler, Martin, Kent Beck, John Brant, William Opdyke, and Don Roberts (June 1999). Refactoring: Improving the Design of Existing Code. Addison-Wesley. ISBN 0-201-48567-2.
- Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. ISBN 0-201-63361-2.
- Cohen, Tal, Gil, Joseph (2007). Better Construction with Factories (PDF). Journal of Object Technology (Bertrand Meyer). Gearchiveerd van origineel op 8 februari 2012. Geraadpleegd op 24 maart 2013.
Externe links
[bewerken | brontekst bewerken]- (en) Factory method in UML and in LePUS3 (een formele modelling-taal)
- (en) Description from the Portland Pattern Repository
- (en) Jt J2EE Pattern Oriented Framework
- (en) design-patterns-factory-method-pattern example (voorbeeld voor C#-programmeurs)