Upload
lamhanh
View
217
Download
0
Embed Size (px)
Citation preview
Tóp icos Avançados em L inguagem de P rogramação
Padrões de Projeto
Prof. Alexandre Vidal
DEINF-UFMA Janeiro de 2007
Tóp icos Avançados em L inguagem de P rogramação
● padrões de criação● ajudam a tornar um sistema independente de
como seus objetos são criados, compostos e representados;
● padrões estruturais● se preocupam com a forma como classes e
objetos são compostos para formar estruturas maiores;
● padrões comportamentais● tratam de algoritmos e da atribuição de
responsabilidade entre objetos.
Tóp icos Avançados em L inguagem de P rogramação
● Padrões de criação (5)– Factory Method;– Abstract Factory;– Builder;– Singleton;– Prototype.
Tóp icos Avançados em L inguagem de P rogramação
● Padrões estruturais (7)– Decorator;– Composite;– Proxy;– Adapter;– Bridge;– Flyweight;– Facade.
Tóp icos Avançados em L inguagem de P rogramação
● Padrões comportamentais (11)● Strategy;● Iterator;● Template Method;● Mediator;● Observer;● Chain of Responsability;● Memento;● Command;● State;● Visitor;● Interpreter.
Tóp icos Avançados em L inguagem de P rogramação
● Factory Method– intenção:
● define uma interface para criar um objeto,mas deixa as subclasses decidirem que classes instanciar.
– aka: virtual constructor– motivação: frameworks
Tóp icos Avançados em L inguagem de P rogramação
● Factory Method– aplicabilidade:
● uma classe não pode antecipar a classe de objetos que deve criar;
● uma classe quer que suas subclasses especifiquem os objetos que criam;
● localizar o conhecimento a respeito de subclasses às quais são delegadas responsabilidades específicas.
Tóp icos Avançados em L inguagem de P rogramação
● Factory Method– Estrutura
Tóp icos Avançados em L inguagem de P rogramação
● Factory Method– Participantes
● Product: define a interface dos objetos criados pelo método fábrica;
● ConcreteProduct: implementa a interface definida em Product;
● Creator: declara o método fábrica (que retorna um objeto do tipo Product;
● ConcreteCreator: redefine o método fábrica para retornar uma instância da classe ConcreteProduct.
Tóp icos Avançados em L inguagem de P rogramação
● Factory Method– Conseqüências
● o código lida somente com a interface de Product;
● só é vantagem quando Creator precisa ter subclasses de qualquer maneira;
● conecta hierarquia de classes paralelas que ocorrem quando uma classe delega algumas de suas responsabilidades para uma classe separada (ver página 114, GoF traduzido).
Tóp icos Avançados em L inguagem de P rogramação
● Factory Method– Colaborações
● Creator depende de suas subclasses para definir o método fábrica que retorne uma instância do ConcretProduct apropriado;
Tóp icos Avançados em L inguagem de P rogramação
● Factory Method– Implementação (opções)
● Creator é uma classe abstrata e não fornece implementação para o método fábrica;
● Creator é uma classe concreta e fornece implementação por omissão (default) para o método fábrica;
● métodos fábrica parametrizados;● templates para evitar o uso de subclasses.
Tóp icos Avançados em L inguagem de P rogramação
● Factory Method– exemplo de código
● exemplos em sala;● tarefa do aluno
– identificar uma situação em um sistema a sua escolha para empregar o Factory Method;
– implementar e testar.– mostrar o código em sala.
Tóp icos Avançados em L inguagem de P rogramação
● Factory Method– usos conhecidos
● ver página 120 no GoF (traduzido);– Padrões Relacionados
● Abstract Factory● Template Method;● Prototype.
– Como o Factory Method promove fraco acoplamento de código ?
Tóp icos Avançados em L inguagem de P rogramação
● Strategy– intenção:
● define uma família de algoritmos, encapsula cada algoritmo e os torna intercambiáveis, permitindo que o algoritmo varie independente dos clientes que o utilizam.
– aka: Policy
Tóp icos Avançados em L inguagem de P rogramação
● Strategy– motivação:
● clientes que necessitam de diferentes algoritmos se tornam mais complexos se os incluirem em seu código;
● diferentes algoritmos são adequados em diferentes situações na resolução de um mesmo problema;
Tóp icos Avançados em L inguagem de P rogramação
● Strategy– aplicabilidade:
● muitas classes relacionadas diferem somente no seu comportamento;
● você necessita de variantes de um algoritmo;● um algoritmo usa dados sobre os quais o cliente
não precisa ter conhecimento;● comandos condicionais relacionados para
escolher entre muitos comportamentos de uma classe podem ser movidos para sua própria classe Strategy
Tóp icos Avançados em L inguagem de P rogramação
● Strategy– Estrutura
Tóp icos Avançados em L inguagem de P rogramação
● Strategy– Participantes
● Strategy: define uma interface comum para todos os algoritmos suportados;
● ConcreteStrategy: implementa o algoritmo usando a interface de Strategy;
● Context: – é configurado com um objeto ConcreteStrategy;– mantém uma referência para um objeto Strategy;– pode definir uma interface que permite a Strategy
acessar seus dados.
Tóp icos Avançados em L inguagem de P rogramação
● Strategy– Colaborações
● Strategy e Context interagem para implementar o algoritmo escolhido;
● os clientes usualmente criam e passam um objeto ConcreteStrategy para o contexto e passam a interagir diretamente com o contexto;
Tóp icos Avançados em L inguagem de P rogramação
● Strategy– Conseqüências
● famílias de algoritmos relacionados;● uma alternativa ao uso de subclasses;● estratégias eliminam comandos condicionais da
linguagem de programação;● possibilidade de escolha de implementações;● os clientes devem conhecer diferentes
estratégias;● custo de comunicação entre Strategy e Context;● aumento do número de objetos.
Tóp icos Avançados em L inguagem de P rogramação
● Strategy– Implementação (aspectos)
● definindo as interfaces de Strategy e Context;● estratégias e parâmetros template;● tornando os objetos Strategy opcionais.
Tóp icos Avançados em L inguagem de P rogramação
● Strategy– exemplo de código
● exemplos em sala;● tarefa do aluno
– identificar uma situação em um sistema a sua escolha para empregar o padrão Strategy;
– implementar e testar. (não precisa criar diferentes algoritmos);
– mostrar o código em sala.
Tóp icos Avançados em L inguagem de P rogramação
● Strategy– usos conhecidos
● ver página 299 no GoF (traduzido);– Padrões Relacionados
● Flyweight.