Qual é a diferença entre o padrão de fábrica e o padrão abstrato de fábrica

Índice:

Anonim

o principal diferença entre o padrão de fábrica e o padrão de fábrica abstrato é que o O padrão de fábrica fornece um método de criação de objetos sem especificar a classe exata usada para criá-lo, enquanto o padrão de fábrica abstrato fornece um método para combinar um grupo de fábricas individuais sem especificar suas classes concretas.

Os padrões de projeto são as soluções para problemas gerais que os desenvolvedores de software enfrentam ao desenvolver software. Eles são genéricos e não dependem do tipo de sistema ou da linguagem de programação. Além disso, são soluções comprovadas e oferecem as melhores práticas. Existem três tipos de padrões de projeto: criacionais, estruturais e comportamentais. Os padrões criacionais fornecem um método para criar objetos enquanto escondem a lógica criacional. Além disso, tornam o programa mais flexível. O padrão de fábrica e o padrão de fábrica abstrato são dois desses padrões de design criacionais.

Padrão de fábrica abstrato, padrão de fábrica

O que é padrão de fábrica

Um padrão de fábrica fornece um bom método para criar objetos. Usando este método, o programador pode criar objetos sem expor a lógica criacional. Também é possível referir o objeto recém-criado usando uma interface comum. Consulte o programa abaixo.

Figura 1: Interface de forma

Figura 2: Classe Retângulo

Figura 3: Classe Square

Figura 4: classe de círculo

Figura 5: classe ShapeFactory

Figura 6: classe principal

A interface Shape possui um método abstrato chamado draw. Retângulo, Quadrado e Círculo são classes. Eles implementam a interface Shape. Portanto, essas classes fornecem uma implementação para o desenho do método. O método draw em cada classe tem sua própria implementação. A classe ShapeFacotry possui um método chamado getShape. Recebe uma corda. Este método retornará um objeto de acordo com a string recebida.

No método principal, existe um objeto chamado forma. É do tipo ShapeFactory. O método getShape é chamado usando esse objeto. A string “Retângulo” é passada para ele. O objeto de retorno é armazenado em shape1, que é do tipo Shape. Da mesma forma, as strings “SQUARE” e “CIRCLE” são passadas para getShape. Os objetos de retorno são armazenados em shape2 e shape3. Cada objeto chama o método draw e o método draw correspondente é executado de acordo com a string passada.

O programa principal usa a classe ShapeFactory para obter um objeto Shape. Ele passa a string necessária para a ShapeFactory para obter o tipo de objeto de que precisa.

O que é Abstract Factory Pattern

O Abstract Factory Pattern usa uma super fábrica e cria outras fábricas. Também é conhecido como fábrica de fábricas. Nesse padrão, uma interface cria uma fábrica de objetos relacionados sem especificar explicitamente suas classes. Em outras palavras, depois de criar a superfábrica, ela pode criar outras fábricas. Consulte o programa abaixo.

Figura 7: Interface colorida

Figura 8: Classe amarela

Figura 9: classe laranja

Figura 10: Classe roxa

Figura 11: classe AbstractFactory

Figura 12: classe ShapeFactory

Figura 13: classe ColorFactory

Figura 14: classe FactoryProducer

Figura 15: Programa principal

Interface Shape e as classes Rectangle, Square, Circle são as mesmas da seção anterior. A cor é uma interface; ele tem um método abstrato chamado fill. As classes Yellow, Orange e Purple implementam essa interface. Portanto, essas classes fornecem implementação para o método de preenchimento. A classe AbstrcatFactory possui dois métodos como getShape e getColor. A classe ShapeFactory estende AbstractFacotry. Da mesma forma, a classe ColorFactory estende AbstractFactory. Essas classes têm as implementações para os métodos getShape e getColor.

A classe FactoryProducer tem um método chamado getFactory que retorna um objeto do tipo AbstractFactory. Ele retorna um objeto ShapeFactory ou ColorFactory ou nulo, dependendo da string que obtém. Finalmente, o método principal usa o FactoryProducer para obter AbstractFactory para obter fábricas de classes concretas.

Diferença entre o padrão de fábrica e o padrão abstrato de fábrica

Definição

Padrão de fábrica é um padrão de criação que usa um método para lidar com o problema de criação de objetos sem ter que especificar a classe exata do objeto que será criado. O padrão de fábrica abstrato, por outro lado, é um padrão de criação que fornece uma maneira de encapsular um grupo de fábricas individuais que têm um tema comum, sem especificar suas classes concretas. Assim, essas definições explicam a principal diferença entre o padrão de fábrica e o padrão de fábrica abstrato.

Escondendo a construção

Outra diferença entre o padrão de fábrica e o padrão de fábrica abstrato é que o padrão de fábrica oculta a construção de um único objeto, enquanto o padrão de fábrica abstrato oculta a construção de uma família de objetos relacionados.

Conclusão

O padrão de fábrica e o padrão de fábrica abstrata são dois padrões de design criacionais. O padrão de fábrica fornece um método de criação de objetos sem especificar a classe exata usada para criá-lo. Em contraste, o padrão de fábrica abstrato fornece um método para combinar um grupo de fábricas individuais sem especificar suas classes concretas. Portanto, esta é a principal diferença entre o padrão de fábrica e o padrão de fábrica abstrato.

Referência:

1. “Padrão de Design do Método de Fábrica”. Javatpoint, disponível aqui.2. “Abstract Factory Pattern.” Javatpoint, disponível aqui.

Qual é a diferença entre o padrão de fábrica e o padrão abstrato de fábrica