Abstract Factory
Origem: Wikipédia, a enciclopédia livre.
Abstract Factory é um padrão de projeto ou de desenho (do inglês design pattern). Este padrão permite a criação de famílias de objetos relacionados ou dependentes, através de uma única interface e sem que a classe concreta seja especificada.
Um exemplo de uso do padrão Abstract Factory é na implementação de um Toolkit que funcione em diferentes interfaces gráficas, tal como Motif, GTK+ (GNOME) ou Qt (KDE). Estas diferentes GUIs possuem diferentes padrões de controles visuais. É importante que os programas implementados com o toolkit, utilizem uma interface comum para criação de controles independentemente da GUI utilizada. Este problema pode ser resolvido criando-se uma classe abstrata que declara uma interface genérica para criação dos controles visuais e uma classe abstrata para criação de cada tipo de controle. Para cada um dos padrões tecnológicos contemplados, Gnome por exemplo, existe uma classe concreta que contém a implementação relativa a cada controle.
O programa implementado com o auxílio do Toolkit cria os compomentes através das classes abstratas e não tem conhecimento das classes concretas.
[editar] Exemplo
O diagrama mostra a solução para o problema citado. A classe abstrata WidgetFactory possui duas especializações: MotifWidgetFactory para widgets Motif e QtWidgetFactory para widgets Qt. Essas especializações são classes concretas capazes de produzir os elementos da interface gráfica. O cliente do toolkit obtém os elementos gráficos de que necessita através da classe (interface) WidgetFactory, isto é, ele não tem conhecimento das classes concretas. Da mesma maneira, o cliente somente interage com as interfaces que representam os elementos produzidos pela Abstract Factory (no exemplo, a classe Janela e a classe Botao).