3.1 Abstract Factory
Nos padrões GoF podemos encontrar dois padrões para criação de instâncias de classes:
São padrões para se permitir um baixo acoplamento entre classes e o código fonte responsável por criação de instâncias destas classes.
Para que usar isto? Digamos que vamos fazer um sistema Desktop que possui formulários. Gostaríamos que o código deste sistema suportasse diferentes layouts de tela (Motif, Windows etc.). Para se criar uma tela em um layout, talvez o código de criação de formulário seja diferente do código de criação do mesmo formulário em outro layout. Para separar este código de criação de formulário relativo à arquitetura de cada layout, podemos utilizar uma interface genérica de criação (factory), que isola o código.
Assim, ao invés de chamarmos o construtor de um formulário num dado layout com new, usamos um método factory.