Baixe o app para aproveitar ainda mais
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
Compartilhar