Este ejemplo ilustra cómo se puede usar el método de fábrica para crear elementos de interfaz de usuario multiplataforma sin acoplar el código del cliente a clases de interfaz de usuario concretas.
La clase de diálogo base usa diferentes elementos de la interfaz de usuario para representar su ventana. En varios sistemas operativos, estos elementos pueden verse un poco diferentes, pero aún así deberían comportarse de manera coherente. Un botón en Windows sigue siendo un botón en Linux.
Cuando el método de fábrica entra en juego, no es necesario reescribir la lógica del diálogo para cada sistema operativo. Si declaramos un método de fábrica que produce botones dentro de la clase de diálogo base, más tarde podemos crear una subclase de diálogo que devuelva botones con estilo de Windows del método de fábrica. La subclase hereda la mayor parte del código del cuadro de diálogo de la clase base, pero, gracias al método de fábrica, puede representar botones con aspecto de Windows en la pantalla.
Para que este patrón funcione, la clase de diálogo base debe trabajar con botones abstractos: una clase base o una interfaz que siguen todos los botones concretos. De esta forma, el código del cuadro de diálogo sigue siendo funcional, independientemente del tipo de botones con el que funcione.
Por supuesto, también puede aplicar este enfoque a otros elementos de la interfaz de usuario. Sin embargo, con cada nuevo método de fábrica que agrega al cuadro de diálogo, se acerca al patrón Abstract Factory. No temas, hablaremos de este patrón más adelante.