factory method - t©cnica

Download Factory Method - T©cnica

Post on 11-Feb-2016

220 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

Padrões de Projeto, importante para solução de problemas.

TRANSCRIPT

  • Instituto Federal de Educao, Cincia e Tecnologiada Paraba campus CajazeirasCurso: Anlise e Desenvolvimento de SistemasProfessor: RodrigoDisciplina: Padres de Projeto

    Ftima FerreiraSrgio Diniz

    Padro de Criao de ObjetosFactory Method

  • Factory Method

  • Definir uma interface para criar um objeto, mas deixar que subclasses decidam que

    classe instanciar. Factory Method permite que uma classe delegue a responsabilidade

    de instanciamento s subclasses. [GoF]

  • Inteno

    Definir uma interface para criao de objetos, permitindo asubclasse decidir qual das implementaes deve serinstanciada;

    Factory Method faz uma classe delegar a instanciao asubclasses;

    Retornar uma instncia, dentre muitas possveis classes,dependendo dos dados providos a ele.

    Tambm conhecido como virtual construtor;

  • Inteno possvel criar um objeto sem ter conhecimento algum dasua classe concreta?

    Esse conhecimento deve estar em alguma parte dosistema, mas no precisa estar necessariamente no cliente.

    Factory Method define uma interface comum para criarobjetos;

    O objeto especfico determinado nas diferentesimplementaes dessa interface;

    Factory Method so mtodos (podem ser estticos) queretornam uma instncia de uma classe;

  • Inteno Separa assim: Uma "familia" de classes dotadas da mesma interface

    ("produtos"); e

    Uma classe ("fabrica") que possui um mtodo especial (ofactory method) que cria tais objetos;

  • Motivao Construir objetos individuais sem que a construorequeira conhecimentos das classes especficas que estosendo instanciadas;

    Criar uma classe de abstrao que decide qual das opesde classe retornar sem que a classe retornada seja de prvioconhecimento.

  • O Problema

    Framework especfico para uma aplicao que manipula documentos multimdia;

    possvel criar um framework mais genrico, para qualquer aplicao de manipulao de documentos?

  • A Soluo

    Classes abstratas implementam as funes comuns a todo tipo dedocumento;

    Mtodo fbrica definido na superclasse e implementado nasubclasse.

  • Estrutura

  • A Lgica

  • Participantes Product Define a interface dos objetos que o Factory Method cria.

    ConcreteProduct Classes que vo implementar a interface definida em produto.

    So as diferentes Classes que podem ser instanciadas;

  • Participantes Creator Declara o Factory Method (mtodo de criao) o qual retorna um

    objeto do tipo Product (Produto). A Fbrica tambm pode definiruma implementao bsica do Factory Method, que retorne umobjeto ProdutoCreate bsico.

    ConcreteCreator Sobrescreve o mtodo de produo para retornar um objeto da

    classe ConcreteProduct;

  • Aplicabilidade Use Factory Method quando:Uma classe no pode antecipar ou conhecer a

    classe dos objetos que deve criar;

    Uma classe quer suas subclasses para especificaros objetos que cria;

    Voc precisa criar um objeto mas voc no querusar a diretiva NEW na classe cliente;

  • Aplicabilidade Isso comum numa aplicao bem desenhada ondevariveis so estruturadas com base em interfaces. Assim,vrios tipos de objetos diferentes podem ser associadas aessa varivel.

  • Colaboraes

    A criao dos objetos de responsabilidade daclasse de produo que deve retornar um objetode uma classe apropriada;

    A Fbrica depende das suas subclasses para definiro mtodo fbrica de maneira que retorne umainstncia da ProdutoConcreto;

  • ConsequnciasMelhor Extensibilidade

    Elimina a necessidade de montar um cdigo em funo a umaclasse especfica. No nosso exemplo de aplicao, o cdigo slida com uma interface chamada Product.

    Fornecer ganchos para subclasses

    Esse padro de projeto d maior flexibilidade para as classes,pois criar um objeto em uma classe que utiliza o FactoryMethod melhor que faz-lo em separado, funcionando,assim, como uma conexo para que uma das subclassesforneam uma verso estendida de um objeto.

  • Desvantagens Eventualmente, clientes podem ter queespecializar a classe Fabrica apenas para criarum objeto ProdutoConcreto particular;

  • Padres Relacionados Abstract Factory

    Template Method

    Prototype

  • Factory Method - Exemplos

  • Exemplo 01 Suponha que ns temos que desenvolverum sistema de consulta de informaes deveculos Celta, palio, gol e vectra.Informamos qual carro queremos consultar erecebemos as informaes sobre estescarros. Mas no queremos que as classesconcretas fiquem muito acopladas a nossaclasse cliente.

  • Diagrama

  • Soluo

  • Soluo

  • Soluo

  • Soluo

  • Soluo

  • Exemplo 02 Imagine a implementao de um sistema para controle deuma pizzaria. A pizzaria dispem de alguns tipos de pizza(pizza grega de molusco estilo Cajazeiras, pizza portuguesaestilo Sousa...), bem como os servios responsveis parafabricar uma pizza (preparar a pizza, assar, cortar eempacotar);

    Problema... As pizzas esto sendo instanciadas na classe cliente.

    Quando cliente quer preparar uma nova pizza, ele mesmo o faz.

  • Exemplo 02

    Cliente tem que preparar Pizza

  • Exemplo 02 O que fazer para suprimir uma pizza da classe principal ouadicionar novas pizzas?

    O que acontece se houver vrios pontos de instanciaodestas pizzas?

    Problema de ACOPLAMENTO Classes clientes devem conhecer as subclasses de Pizza.

    Mudanas na hierarquia (no nome das classes por exemplo)provocam mudanas em todos os pontos de instanciao das pizzas.

    Pode haver muitos pontos dependendo do sistema.

  • Exemplo 02

  • Exemplo 02 Soluo ENCAPSULAR a criao das Pizzas em outro objeto que sabe como

    criar instanciar objetos das subclasses pizzas.

    Dessa maneira todo cdigo que for instanciar pizzas, utiliza a classefbrica (pizzaria) para criar estes objetos.

    Baixo acoplamento, j que mudanas nas classes so absorvidaspela fbrica;

    Somente fbrica conhece as Pizzas concretas;

  • Exemplo 02

  • Soluo

  • Soluo

  • Soluo

  • Soluo

  • Soluo

  • Soluo

  • Exemplo 03 Imagine a seguinte situao:

    Desenvolver um sistema de radar que executa asseguintes operaes: envia um sinal para central decontrole, corrigir o tempo verificao e processar osinal capturado. Sabendo que o terreno exercegrande influncia no modo de operao eprocessamento do radar. Ou seja, em terrenosplanos, aquticos e montanhosos o radar vaiapresentar comportamentos distintos.

  • Diagrama

  • Soluo

  • Soluo

  • Soluo

  • Soluo

  • Soluo

  • Atividade Imagine que voc foi contratado para desenvolver jogo deestratgia. Neste jogo ns temos trs inimigos o zumbi,Feiticeiro e o Troll que ataca, vira pra esquerda, vira pradireita, anda pra frente e para trs.

    Imagine que temos que instanciar esses objetos na nossaaplicao de maneira que o cdigo cliente no fique muitoacoplado as classes concretas.

  • Diagrama

  • Soluo

  • Soluo

  • Soluo

  • Soluo

  • Soluo