Questo esempio illustra come utilizzare il Metodo Factory per creare elementi dellinterfaccia utente multipiattaforma senza accoppiare il codice client a classi dellinterfaccia utente concrete.
La classe di dialogo di base utilizza diversi elementi dellinterfaccia utente per visualizzare la sua finestra. In vari sistemi operativi, questi elementi possono apparire leggermente diversi, ma dovrebbero comunque comportarsi in modo coerente. Un pulsante in Windows è ancora un pulsante in Linux.
Quando il metodo di fabbrica entra in gioco, non è necessario riscrivere la logica della finestra di dialogo per ogni sistema operativo. Se dichiariamo un metodo factory che produce pulsanti allinterno della classe dialog di base, possiamo successivamente creare una sottoclasse dialog che restituisce pulsanti in stile Windows dal metodo factory. La sottoclasse eredita quindi la maggior parte del codice della finestra di dialogo dalla classe di base, ma, grazie al metodo factory, può visualizzare sullo schermo pulsanti dallaspetto di Windows.
Affinché questo modello funzioni, la classe di dialogo di base deve lavorare con pulsanti astratti: una classe base o uninterfaccia seguita da tutti i pulsanti concreti. In questo modo il codice della finestra di dialogo rimane funzionale, qualunque sia il tipo di pulsanti con cui funziona.
Naturalmente, puoi applicare questo approccio anche ad altri elementi dellinterfaccia utente. Tuttavia, con ogni nuovo metodo factory che aggiungi alla finestra di dialogo, ti avvicini al pattern Abstract Factory. Non temere, parleremo di questo schema più tardi.