Este exemplo ilustra como o Método de fábrica pode ser usado para criar elementos de interface do usuário de plataforma cruzada sem acoplar o código do cliente a classes de interface de usuário concretas.
A classe de diálogo base usa diferentes elementos de IU para renderizar sua janela. Em vários sistemas operacionais, esses elementos podem parecer um pouco diferentes, mas ainda assim devem se comportar de maneira consistente. Um botão no Windows ainda é um botão no Linux.
Quando o método de fábrica entra em ação, você não precisa reescrever a lógica da caixa de diálogo para cada sistema operacional. Se declararmos um método de fábrica que produz botões dentro da classe de diálogo base, podemos criar posteriormente uma subclasse de diálogo que retorna botões no estilo do Windows do método de fábrica. A subclasse então herda a maior parte do código da caixa de diálogo da classe base, mas, graças ao método de fábrica, pode renderizar botões com aparência de Windows na tela.
Para que esse padrão funcione, a classe de diálogo base deve trabalhar com botões abstratos: uma classe base ou uma interface que todos os botões concretos seguem. Desta forma, o código da caixa de diálogo permanece funcional, qualquer que seja o tipo de botão com que trabalha.
Claro, você também pode aplicar essa abordagem a outros elementos da IU. No entanto, com cada novo método de fábrica adicionado à caixa de diálogo, você se aproxima do padrão Abstract Factory. Não tenha medo, falaremos sobre esse padrão mais tarde.