Buscar

Design Patterns - Factory Method

Prévia do material em texto

Design Patterns
Factory Method Design Pattern
 Intent
 Definir uma interface para criar um objeto, mas deixa as subclasses decidirem
qual classe instanciar. Factory Method permite a instanciação de classe à
subclasses.
 A definição de um construtor "virtual".
 O novo operador considerado nocivo.
Factory Method Design Pattern
 Problem
 A estrutura precisa padronizar o modelo de arquitetura para uma variedade
de aplicações, mas permitir aplicações individuais para definir seus próprios
objetos de domínio e proceder à sua instanciação.
Factory Method Design Pattern
 Discussion
 Factory Method é a criação de objetos como Template Method é a implementação de
um algoritmo. A superclasse especifica todo o comportamento padrão e genérico
(usando puros "espaços reservados" virtuais para as etapas de criação), e depois os
delegados dos detalhes de criação de subclasses que são fornecidos pelo cliente.
 Factory Method faz um projeto mais personalizável e apenas um pouco mais
complicado. Outros padrões de projeto exigem novas classes, enquanto Factory Method
só requer uma nova operação.
 As pessoas costumam usar o Factory Method como a forma padrão para criar objetos,
mas não é necessário se: a classe que é instanciada nunca muda, ou instanciação ocorre
em uma operação que pode facilmente substituir subclasses (como uma operação de
inicialização).
 Factory Method é semelhante a Abstract Factory, mas sem a ênfase na família.
 Factory Methods são rotineiramente especificado por uma estrutura de arquitetura, e,
em seguida, executado pelo usuário do framework.
Factory Method Design Pattern
 Structure
 A implementação do Factory Method discutido na Gang of Four (abaixo) se 
sobrepõe em grande parte com a de Abstract Factory . Por esse motivo , a 
apresentação centra-se na abordagem que tornou-se popular.
Factory Method Design Pattern
 Uma definição mais popular de método de fábrica é : um método estático de
uma classe que retorna um objeto desse tipo de classe " . Mas ao contrário de
um construtor , o objeto real que retorna pode ser uma instância de uma
subclasse. Ao contrário de um construtor, um objeto existente pode ser
reutilizado , ao invés de um novo objeto criado. Ao contrário de um
construtor, métodos de fábrica podem ter diferentes e mais descritivos nomes
(por exemplo, Color.make_RGB_color (float vermelho, verde flutuar , flutuar
azul) e Color.make_HSB_color (float matiz, saturação float, brilho float)
Factory Method Design Pattern
 O cliente é totalmente dissociado dos detalhes de implementação de classes 
derivadas . Criação polimórfica é agora possível.
Factory Method Design Pattern
 Exemple
 O Factory Method define uma interface para a criação de objetos , mas deixa
as subclasses decidirem qual classe instanciar . Prensas de moldagem de
injeção demonstram esse padrão. Os fabricantes de brinquedos de plásticos
usam no processo de moldagem, e injetar o plástico em moldes das formas
desejadas . A classe de brinquedo (carro, figura de ação , etc ) é determinada
pelo molde.
Factory Method Design Pattern
 Check List
 Se você tem uma hierarquia de herança que exerce polimorfismo, considere
adicionar uma capacidade de criação polimórfico, definindo um método de
fábrica estático na classe base.
 Projete os argumentos para o Factory Method. Que qualidades ou
características são necessárias e suficientes para identificar a classe derivada
correta para instanciar?
 Considere a concepção de um interno "objeto pool" que permitirá que objetos
a serem reutilizados em vez de criado a partir do zero.
 Considere fazer todos os construtores privados ou protegidos.
Factory Method Design Pattern
 Rules of Thumbs
 Classes Abstract Factory geralmente são implementadas com Factory Method,
mas eles podem ser implementados usando Prototype .
 Factory Methods são geralmente chamados de dentro de métodos de modelo .
 Factory Method : criação por meio de herança. Prototype: criação por meio
de delegação.
 Muitas vezes, os projetos começam usando Factory Method (menos
complicado, mais personalizável , subclasses proliferam ) e evoluir em
direção a Abstract Factory , Prototype , ou Builder ( mais flexível, mais
complexo) como o designer descobre onde é necessária mais flexibilidade.
Factory Method Design Pattern
 Prototype não requer subclasse , mas exige uma operação de inicialização .
Factory Method requer subclasse , mas não exige Initialize.
 A vantagem de um Factory Method é que ele pode retornar a mesma instância
várias vezes, ou pode retornar uma subclasse , em vez de um objeto desse tipo
exato .
 Alguns defensores Factory Method recomendamo que por uma questão de design
de linguagem (ou na sua falta, por uma questão de estilo) absolutamente todos os
construtores devem ser privado ou protegido. Não é de interesse de ninguém se
uma classe produz um novo objeto ou recicla um velho.
 O novo operador considerado nocivo . Há uma diferença entre o pedido de um
objeto e criar um. O novo operador sempre cria um objeto, e não consegue
encapsular a criação do objeto . A Factory Method impõe que o encapsulamento ,
e permite que um objeto a ser solicitado sem acoplamento inextricável ao ato de
criação.
Factory Method Design Pattern

Continue navegando