Dit voorbeeld illustreert hoe de fabrieksmethode kan worden gebruikt voor het maken van platformonafhankelijke UI-elementen zonder de clientcode te koppelen aan concrete UI-klassen.
De basisdialoogklasse gebruikt verschillende UI-elementen om zijn venster weer te geven. Onder verschillende besturingssystemen zien deze elementen er misschien een beetje anders uit, maar ze moeten zich toch consistent gedragen. Een knop in Windows is nog steeds een knop in Linux.
Als de fabrieksmethode in werking treedt, hoeft u de logica van het dialoogvenster voor elk besturingssysteem niet te herschrijven. Als we een fabrieksmethode declareren die knoppen produceert binnen de basisdialoogklasse, kunnen we later een dialoogsubklasse maken die Windows-stijl knoppen retourneert vanuit de fabrieksmethode. De subklasse erft dan de meeste dialoogcode van de basisklasse, maar kan, dankzij de fabrieksmethode, Windows-achtige knoppen op het scherm weergeven.
Om dit patroon te laten werken, moet de basisdialoogklasse werken met abstracte knoppen: een basisklasse of een interface die alle concrete knoppen volgen. Op deze manier blijft de code van het dialoogvenster functioneel, met welk type knop het ook werkt.
Natuurlijk kunt u deze benadering ook toepassen op andere UI-elementen. Met elke nieuwe fabrieksmethode die u aan het dialoogvenster toevoegt, komt u echter dichter bij het Abstract Factory-patroon. Vrees niet, we zullen het later over dit patroon hebben.