Baixe o app para aproveitar ainda mais
Prévia do material em texto
Design Patterns Prototype Prototype Design Pattern Intent Especificar os tipos de objetos para criar usando uma instância protótipo e criar novos objetos copiando este protótipo. Cooptar uma instância de uma classe para o uso como um criador de todas as ocorrências futuras. Prototype Design Pattern Problem Aplicação “Hard Wire" da classe de objeto para criar em cada expressão um “new". Discussion Declare uma classe base abstrata que especifica um método puro virtual "clone", e mantém um dicionário de todas as classes concretas derivadas "cloneable". Qualquer classe que necessitar de uma capacidade de "construtor polimórfico": deriva-se da classe base abstrata, registra seu exemplo prototípico, e implementa a (operação) clone. O cliente então, em vez de escrever o código que chama o operador "new" em um hard-wired nome da classe, chama a operação de "clone" na classe base abstrata, fornecendo uma string ou tipo de dados enumerado que designa o betão especial da classe derivada desejada. Prototype Design Pattern Structure A Fábrica sabe como encontrar o protótipo correto, e cada Produto sabe como gerar novas instâncias de si mesmo Prototype Design Pattern Example O padrão Prototype especifica o tipo de objetos para criar usando uma instância prototípica. Protótipos de novos produtos são muitas vezes construídos antes da produção total, mas neste exemplo , o protótipo é passivo e não participa do processo de copiar a si mesmo. A divisão mitótica de uma célula - resultando em duas células idênticas - é um exemplo de um protótipo, que desempenha um papel ativo na cópia e, portanto, em si, demonstra o padrão de protótipo . Quando uma célula se divide , duas células de resultado genotvpe idênticos. Em outras palavras , o próprio clones celulares . Prototype Design Pattern Check list Adicione um método clone () para a hierarquia de "produto" existente. Projetar um " registro " que mantém um cache de objetos protótipo . O registro pode ser encapsulado em uma nova classe de fábrica , ou na classe base da hierarquia "produto" . Projetar um método de fábrica que: pode (ou não ) aceitar argumentos , encontra o objeto de protótipo correto, chama clone () no objeto , e retorna o resultado . O cliente substitui todas as referências ao novo operador com chamadas para o método de fábrica . Prototype Design Pattern Rules of Thumbs Às vezes, padrões de criação são concorrentes : há casos em que um ou outro protótipo ou Abstract Factory pode ser usado corretamente. Em outros momentos, eles são complementory : Abstract Factory pode armazenar um conjunto de protótipos a partir do qual a clonar e retornar objetos de produtos. Abstract Factory , Builder e Prototype pode usar Singleton em suas implementações. Classes Abstract Factory abstrata são frequentemente implementadas com Factory Methods, mas eles podem ser implementados usando Prototype . Factory Method : criação por meio de herança. Protótipo : 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 , Protótipo , ou Builder ( mais flexível, mais complexo) como o designer descobre onde é necessária mais flexibilidade. Prototype Design Pattern Prototype não requer subclasse , mas exige uma operação de " inicializar" . Factory Method requer subclasse , mas não exige Initialize. Projetos que fazem uso pesado dos padrões Composite e Decorator frequentemente podem se beneficiar de Prototype também. Prototype coopta uma instância de uma classe para o uso como um criador de todas as ocorrências futuras . Protótipos são úteis quando a inicialização do objeto é caro, e você antecipa algumas variações sobre os parâmetros de inicialização . Neste contexto, o protótipo pode evitar a " criação a partir do zero " caro, e apoiar a clonagem barato de um protótipo pré- inicializado. Prototype é único entre os outros padrões de criação na medida em que não exige uma classe - apenas um objeto. Linguagens orientadas a objeto , como Auto e Omega que acabar com aulas de confiar inteiramente em protótipos para a criação de novos objetos.
Compartilhar