Pergunta

Eu estou realmente confuso sobre esses três termos.

Meu entendimento é que:

  • no padrão de Fábrica, não há nenhuma fábrica de concreto.A fábrica cria novos objetos de acordo com os parâmetros.

  • em Resumo padrão de Fábrica, existem vários concreto fábricas.O cliente tem para criar diferentes de concreto, fábricas explicitamente.

É isso mesmo?

Quais são as outras diferenças?

Além disso, o que é o Método de Fábrica padrão?É isso mesmo que o padrão de Fábrica?

Foi útil?

Solução

A Gangue Dos Quatro "Padrões De Projeto;Elementos Reutilizáveis Object-Oriented Software", o livro contém duas entradas, "Abstract Factory" (aka 'Virtual Constructor") e "Método de Fábrica"...Eu não sei sobre "Concreto de Fábrica." Eu já ouvi o termo, mas nunca deu muito o pensamento.

Método De Fábrica

No "Método de Fábrica" um objeto que tem um método que é responsável pela instanciação de um outro objeto.Um exemplo comum seria o JavaScript objeto de documento e a criação de HtmlElement objetos:

var newDiv = document.createElement('div');

Isso não é um grande exemplo de que, como uma parte importante do Método de Fábrica é polimorfismo.Se eu pudesse estender document para definir outra classe que define um outro createElement este seria o primeiro Método de Fábrica de material.

Resumo De Fábrica

Um resumo de fábrica destina-se a "fornecer uma interface para a criação de famílias de objetos relacionados ou dependentes sem especificar classes concretas.

O típico direto-out-of-the-book é um exemplo de Widget de Fábrica;de volta, no dia em que o GoF foi publicado, cross-plataforma de desenvolvimento de GUI foi um pouco de um aborrecimento, assim, você pode definir um resumo widget de fábrica de classe.

Essa classe poderia ter métodos createWindow, createButton, createScrollBar etc.Por sua vez, várias implementações seria definida para produzir Swing widgets ou AWT ou o que seja.Em seguida, dependendo da configuração, a classe diferente seria instanciado.

Adendo - O Concreto Da Fábrica

Eu acredito que um Concreto de Fábrica é uma não-resumo implementação de Resumo de Fábrica ou método de Fábrica.

Então, quando eu escrever a minha própria generalização do document o que substitui createElement, a classe I é criar uma Fábrica de Concreto.

Da mesma forma, enquanto WidgetFactory seria um Resumo de Fábrica, SwingWidgetFactory seria um concreto de fábrica.

Outras dicas

A melhor maneira de aprender é definitivamente ler. Dê uma olhada neste: http://www.dofactory.com/patterns/patterns.aspx.

A criação de objetos de adiamento do método da fábrica para subsses. Isso significa que uma classe/interface base é definida, no entanto, o código do cliente não cria um objeto nessa interface. Submas que implementam a interface são deixadas para inicializar um objeto.

As fábricas abstratas podem ser encontradas aqui: http://www.dofactory.com/patterns/patternabstract.aspx#_self2

Já existe uma boa informação nesse site. A próxima melhor coisa é verificar o wiki:

http://en.wikipedia.org/wiki/design_pattern_%28computer_science%29

http://javadesign-patterns.blogspot.com/ é um bom lugar para aprender padrões de design

Padrão de fábrica: retorna objetos de uma família
Fábrica abstrata: retorna objetos de mais de uma família.

Então você pode dizer que a fábrica abstrata contém mais de uma fábrica

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top