Factory Method Design Pattern (Português)


Intenção

  • Defina uma interface para criar um objeto, mas deixe as subclasses decidirem qual classe instanciar. O método de fábrica permite que uma classe deferente para subclasses.
  • Definindo um construtor “virtual”.
  • O operador new considerado prejudicial.

Problema

Uma estrutura precisa padronizar o modelo arquitetônico para uma variedade de aplicativos, mas permite que aplicativos individuais definam seus objetos de owndomain e forneçam sua instanciação.

Discussão

O Factory Method é criar objetos, assim como o Template Method é implementar um algoritmo. Uma superclasse especifica todo o comportamento padrão e genérico (usando puros “marcadores” virtuais para etapas de criação) e, em seguida, delega os detalhes de criação para subclasses que são fornecidas pelo cliente.

O Factory Method torna um design mais personalizável e apenas um pouco mais complicado. Outros padrões de design requerem novas classes, enquanto o Método de Fábrica requer apenas uma nova operação.

As pessoas costumam usar o Método de Fábrica como a maneira padrão de criar objetos; mas não é necessário se: a classe que nunca é instanciada mudanças ou instanciação ocorrem em uma operação que as subclasses podem facilmente superar (como uma operação de inicialização).

O Factory Method é semelhante ao Abstract Factory, mas sem as famílias de ênfase.

Factory Methods. são especificados rotineiramente por uma estrutura de arquitetura e, em seguida, implementados pelo usuário da estrutura.

Estrutura

A implementação do Método de Fábrica discutido na Gangue dos Quatro (abaixo) se sobrepõe amplamente com o da Abstract Factory. Por essa razão, a apresentação neste capítulo enfoca a abordagem que se tornou popular desde então.

Uma definição cada vez mais popular de fábrica método é: um static método de uma classe que retorna um objeto desse tipo de classe “. Mas, ao contrário de um construtor, o objeto real que ele retorna pode ser uma instância de uma subclasse. Diferente de um construtor, um o objeto existente pode ser reutilizado, em vez de um novo objeto criado. Ao contrário de um construtor, os métodos de fábrica podem ter nomes diferentes e mais descritivos (por exemplo, Color.make_RGB_color(float red, float green, float blue) e Color.make_HSB_color(float hue, float saturation, float brightness)

O cliente está totalmente desacoplado dos detalhes de implementação das classes derivadas. A criação polimórfica agora é possível.

Exemplo

O Factory Method define uma interface para a criação de objetos, mas permite que as subclasses decidam quais classes instanciar. As impressoras de moldagem por injeção demonstram esta padronizar. Os fabricantes de brinquedos de plástico processam pó de moldagem de plástico e injetam o plástico em moldes com as formas desejadas. A classe do brinquedo (carro, boneco etc.) é determinada pelo molde.

Lista de verificação

  1. Se você tiver uma hierarquia de herança que exerce polimorfismo, considere adicionar um recurso de criação polimórfico definindo um static método de fábrica na classe base.
  2. Projete os argumentos para o método de fábrica. Quais qualidades ou características são necessárias e suficientes para identificar a classe derivada correta a ser instanciada?
  3. Considere projetar um “pool de objetos” interno que permitirá que os objetos sejam reutilizados em vez de criados do zero.
  4. Considere tornando todos os construtores private ou protected.

Regras básicas

  • As classes Abstract Factory são frequentemente implementadas com Factory Methods, mas podem ser implementadas usando Prototype.
  • Factory Methods são geralmente chamados de Template Methods.
  • Factory Method: criação por herança . Protótipo: criação através da delegação.
  • Freqüentemente, os projetos começam usando o Método de Fábrica (menos complicado, mais personalizável, as subclasses proliferam) e evoluem para AbstractFactory, Prototype ou Builder (mais flexível, mais complexo) conforme o projetista descobre onde mais flexibilidade é necessária.
  • O protótipo não requer subclasse, mas requer uma operação de inicialização. O Factory Method requer subclasse, mas não “trequire a inicialização.
  • A vantagem de um método de fábrica é que pode retornar a mesma instância várias vezes ou pode retornar uma subclasse em vez de um objeto desse tipo exato.
  • Alguns defensores do método de fábrica recomendam isso como uma questão de design de linguagem (ou, na falta disso, como uma questão de estilo ) absolutamente todos os construtores devem ser privados ou protegidos. Não é da conta de ninguém se uma classe fabrica um novo objeto ou recicla um antigo.
  • O operador new considerado prejudicial. Há uma diferença entre solicitar um objeto e criar um. O operador new sempre cria um objeto e falha ao encapsular a criação do objeto.Um Factory Method reforça esse encapsulamento e permite que um objeto seja solicitado sem acoplamento inextricável ao ato de criação.

Ofereça suporte para nosso site gratuito e seja proprietário do e-book!

  • 22 padrões de design e 8 princípios explicados em profundidade
  • 406 páginas bem estruturadas, fáceis de ler e sem jargões
  • 228 ilustrações e diagramas claros e úteis
  • Um arquivo com exemplos de código em 4 idiomas
  • Todos os dispositivos suportados: formatos EPUB / MOBI / PDF

Saiba mais …

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *