Padrão Factory

Ola pessoal, estou aqui procurando uma ajuda pois estou querendo aprender o [size=“18”][color=“red”]Padrão Factory[/color][/size], mais não acho algo simples e objetivo, sem muita enrolação mais sim, fácil de entender ate mesmo com exemplos práticos e exercicios.

Valeu pela força[/quote]

[quote=“Cabeca_cl”]Ola pessoal, estou aqui procurando uma ajuda pois estou querendo aprender o [size=“18”][color=“red”]Padrão Factory[/color][/size], mais não acho algo simples e objetivo, sem muita enrolação mais sim, fácil de entender ate mesmo com exemplos práticos e exercicios.

Valeu pela força[/quote][/quote]

O padrão factory (Fabrica) relaciona-se à boa prática de declarar variáveis usando interfaces e não classes. Por exemplo:

List listadeProdutos = …

e não

ArrayList listadePordutos = …

Se usamos interfaces, muitas classes podem ser usadas como objeto real. Por exemplo, para List temos ArrayList e LinkedList. Como decidir ?
Usando um Fabrica.
Uma fabrica, como o nome indica , fabrica objetos de uma certa interface. Por exemplo:

List listadeProdutos = FabricaDeProdutos.getProdutos();

Aqui vemos o uso de uma fabrica. O corpo de uma fabrica é constituído de um método publico e estático cujo retorno é uma interface. Internamente o método decide que objeto retornar.
Neste exemplo, a fabrica decide também quais produtos estão na lista, mas isso não é o objetivo do factory. O objetivo é isolar a criação de objetos que satisfazem uma interface. Teoricamente todos os new deveriam estar num Factory.
O método da fabrica pode ter parâmetros , por exemplo

DAO dao = DAOFactory.getDAO(“sqlserver”);

Aqui criamos um DAO que comunica com o sqlserver. A classe que implementa essa funcionalidade nós na temos que saber ao escrever o código acima. É o implementador da fabrica que decide isso.

[color=“red”]sergiotaborda[/color],
muito obrigado pelas informações, mais adoraria ver algo na pratica, um texto tipo passo a passo, pois eu fiz algo parecido com isso que sempre retorna um objeto porem vc tem que passar uma String como parâmetro para saber qual tipo vc deseja, algo simples e vc tiver algum código fonte ou ate mesmo um passo a passo, seria de muita ajuda.

email: cabeca.cl@gmail.com

obrigado

Seria mais facil se soubesse o objetivo e o tipo de objetos em causa