Padrões de Projeto - deinf.ufma.brvidal/Topicos2006_2/aula02.pdf · Linguagem de Programação...

Preview:

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.