Factory Method

Factory Method

Factory Method(Método de Fábrica) é um padrão de projeto que visa encapsular a criação de um objeto em um método.[1].

Factory Method é provavelmente um dos padrões mais utilizados porque ele é muito natural. Ele é usado, muitas vezes, sem consciencia de que está sendo usado um padrão.

O problema

Você precisa criar um objeto mas você não quer usar a diretiva new diretamente ou não sabe qual classe instanciar.

A solução

Algumas razões existem para que não queria utilizar new diretamente. A primeira, e mais óbvia, é não saber que classe de objeto instanciar.
Isso é comum numa aplicação bem desenhada onde variáveis são estruturadas com base em interfaces. Assim, vários tipos de objetos diferentes podem ser associadas a essa variável.

Uma outra razão é a necessidade de inicializar o objeto instanciado antes de ser atribuido à variável. Importante notar
que esta inicialização não depende do ambiente onde o objeto será utilizado, mas apenas da estrutura do próprio objeto.

Implementação

A implementação de Factory Method é tão simples quanto fazer new dentro de um método.
Não existe nenhum secreto.

Em particular o método pode ser estático. Neste caso a criação do objeto é feita num escopo diferente da criação feita dentro de um método de instancia. Mesmo assim, se trata do mesmo padrão.

Padrões relacionados

O padrão Factory Method nasce da aplicação direta do principio do encapsulamento e se relaciona
a muitos outros padrões. O padrão Factory pode ser entendido como uma extenção do padrão Factory Method

onde é adicionado polimorfismo ao método de criação.

O padrão Factory Method está relacionado a todos os outros padrões que conduzam algum tipo de construção
encapsulada de objetos. Além de Factory os padrões Iterator, Singleton , Builder,

Prototype e Bridge– para citar alguns – estão relacionados ao padrão Factory Method.

Referências

[1] Design Patterns: Elements of Reusable Object-Oriented SoftwareErich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides
Design Patterns: Elements of Reusable Object-Oriented Software
1995
Addison-Wesley

Licença


Creative Commons License
Sérgio Taborda

Este trabalho é licenciado sob a

Licença Creative Commons Atribuição-Uso Não-Comercial-Não a obras derivadas 3.0 Genérica
.

Deixe uma Resposta

Please log in using one of these methods to post your comment:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s