Padrão Abstract Factory

4 respostas
D

Bom dia,

Estou precisando de uma ajuda!!

Alguem sabe me explicar qual problema que o padrão de projeto criacional Abstract Factory resolve no java?

Eu sei que ele é utilizado para criar varios tipos de objetos de familias diferentes atraves de uma unica interface(abstract).
E que ele isola as classes concretas não permitindo que o usuario crie um objeto usando new.

Mas não entendi qual o problema resolvido ainda alguem tem ideia?

vlw

4 Respostas

drigo.angelo

Um exemplo de utilização desse padrão é junto com o Command Pattern, em que você tem vários objetos de comando, que implementam a interface Command, daí uma forma de “escolher” qual objeto de comando será instanciado é utilizando uma Fábrica de comandos, e quem for utilizar o comando pede pra fábrica criar um comando, geralmente passando uma String com o nome do comando. Geralmente isso é utilizado em app web. Por exemplo se você tem uma interface Command:

public interface Command{ execute(); }
E tem tres classes IncluirCommand, ExcluirCommand, EditarCommand que implementam essa interface.

Você pode criar uma fábrica de comandos, que retorna um objeto do tipo Command

E quando você for usar um comando, faça algo do tipo:

String cmd = "inserir"; //nome do comando aqui... CommandFactory.getCommand(cmd).execute();

el_loko

DBravo:
Bom dia,

Estou precisando de uma ajuda!!

Alguem sabe me explicar qual problema que o padrão de projeto criacional Abstract Factory resolve no java?

Eu sei que ele é utilizado para criar varios tipos de objetos de familias diferentes atraves de uma unica interface(abstract).
E que ele isola as classes concretas não permitindo que o usuario crie um objeto usando new.

Mas não entendi qual o problema resolvido ainda alguem tem ideia?

vlw

Opa, tudo bom?

A utilização do pattern Factory e suas variações (Abstract Factory, Factory Static Method, etc) nos algumas vantagens, por exemplo:
Quando deixamos uma classe com construtor público perdemos o controle da inicialização sobre ela. Se a classe tem construtores com
parametros, praticamente obrigamos os programadores a consultar o javadoc para saber exatamente o que cada um daqueles parametros
significam.

Ter um métodos específico para essa criação, permite encapsular a sua criação (sem expor a forma de criação).
Uma boa definição sobre isso está no livro “Effective Java” por Joshua Bloch falando sobre métodos estáticos que podem substituir o uso dos construtores:
Criar um , ou mais, métodos estáticos que têm nomes claros, especificam o que os parametros significam e encapsulam a real criação do objeto é uma forma simples de ganhar muita produtividade, diminuir acoplamento e aumentar a legibilidade

PS: Lembrando que nessa frase ele não cita o pattern Factory diretamente.

j0nny

Uma dica, tenha um problema para usar padrão, não estude um padrão e tente jogá-lo em qq lugar só pra dizer que ‘eu programo com padrões’.

esmiralha

DBravo:
Bom dia,

Estou precisando de uma ajuda!!

Alguem sabe me explicar qual problema que o padrão de projeto criacional Abstract Factory resolve no java?

Eu sei que ele é utilizado para criar varios tipos de objetos de familias diferentes atraves de uma unica interface(abstract).
E que ele isola as classes concretas não permitindo que o usuario crie um objeto usando new.

Mas não entendi qual o problema resolvido ainda alguem tem ideia?

vlw

Exemplo: Você tem um conjunto de classes cuja responsabilidade é formatar diversos relatórios para saída em uma impressora específica. Você poderia criar um AbstractFactory baseado no tipo de impressora e usa-la para instanciar os diversos relatórios para cada impressora. Se você tiver que adicionar uma nova impressora, é só alterar a fábrica abstrata, criar uma nova implementação de fábrica e criar as novas implementações dos “produtos”.

Criado 22 de março de 2011
Ultima resposta 23 de mar. de 2011
Respostas 4
Participantes 5