Padrões de Projeto - Observer e Strategy

Post on 19-Jul-2015

60 views 1 download

Transcript of Padrões de Projeto - Observer e Strategy

Padrões de ProjetoObserver e Strategy

João Carlos Ottobboni

Observer

Padrão Observer

Objetivo:* Tem responsabilidade de propagar atualizações;

Padrão Observer

Objetivo:* Tem responsabilidade de propagar atualizações;

* Define dependência de um para muitos;

Padrão Observer

Objetivo:* Tem responsabilidade de propagar atualizações;

* Define dependência de um para muitos;

* Garante que quando o objeto observado muda de estado todos

os observadores são atualizados automaticamente.

Padrão Observer

Funcionamento:* É necessário construção de uma classe SUBJECT, que é

responsável por atualizar seus dependentes;

Padrão Observer

Funcionamento:* É necessário construção de uma classe SUBJECT, que é

responsável por atualizar seus dependentes;

* É preciso uma interface chamada OBSERVER, responsável por

observar a classe SUBJECT;

Padrão Observer

Funcionamento:* É necessário construção de uma classe SUBJECT, que é

responsável por atualizar seus dependentes;

* É preciso uma interface chamada OBSERVER, responsável por

observar a classe SUBJECT;

* Um SUBJECT pode possuir vários OBSERVERs;

Padrão Observer

Definição do problema:* Quando uma modificação em um objeto requer a modificação em

vários outros.

Padrão Observer

Definição do problema:* Quando uma modificação em um objeto requer a modificação em

vários outros.

* Quando um objeto precisa notificar vários outros sem saber

quais são eles. Criando um baixo acoplamento.

Padrão Observer

Exemplos de Uso:* Uma empresa de mineração com vários funcionários;

Padrão Observer

Exemplos de Uso:* Uma empresa de mineração com vários funcionários;

* Uma sirene toca informando sobre mudança de estado;

Padrão Observer

Exemplos de Uso:* Uma empresa de mineração com vários funcionários;

* Uma sirene toca informando sobre mudança de estado;

* O alarme da sirene é uma mensagem enviada aos observadores

(funcionários), que pode ser uma troca de turno, detonações ou inicio de

funcionamento;

Padrão Observer

Exemplos de Uso:

Padrão Observer

Exemplos de Uso:

Padrão Observer

Vantagens:* Permite adicionar OBSERVERs sem modificar a classe

SUBJECT;

Padrão Observer

Vantagens:* Permite adicionar OBSERVERs sem modificar a classe

SUBJECT;

* Baixo acoplamento entre OBSERVER e SUBJECT;

Padrão Observer

Vantagens:* Permite adicionar OBSERVERs sem modificar a classe

SUBJECT;

* Baixo acoplamento entre OBSERVER e SUBJECT;

* OBSERVER tem autonomia de considerar ou ignorar uma

atualização do SUBJECT;

Padrão Observer

Vantagens:* Permite adicionar OBSERVERs sem modificar a classe

SUBJECT;

* Baixo acoplamento entre OBSERVER e SUBJECT;

* OBSERVER tem autonomia de considerar ou ignorar uma

atualização do SUBJECT;

* Facilita modularidade do projeto.

Padrão Observer

Desvantagens:* O uso excessivo do padrão pode causar sério impacto na

performance;

Padrão Observer

Desvantagens:* O uso excessivo do padrão pode causar sério impacto na

performance;

* Sistemas onde todos notificam todos ficam inundados de

notificações;

Strategy

Padrão Strategy

Objetivo:

* Serve para definir e encapsular o algorítimo em

um objeto;

Padrão Strategy

Objetivo:

* Serve para definir e encapsular o algorítimo em

um objeto;

* Fornece interfaces suficientes para suportar

uma variedade de algoritmos;

Padrão Strategy

Funcionamento:

Padrão Strategy

Funcionamento:

● Strategy - Interface comum para todas as classes(variações

concretas) que definem os diversos comportamentos esperados;

● ConcreteStrategy - Classes que implementam os diversos

comportamentos que devem atender a cada contexto;

● Context - Classe onde os objetos ConcreteStrategy serão

instanciados;

As classes context instanciam os objetos strategy e invocam o método

AlgorithInterface passando os parâmetros solicitados, então a interface

strategy decide qual das implementações ConcretyStrategy deve atender

a chamada.

Padrão Strategy

Definição do problema:* Quando se tem um método que e aplicado em diferentes

situações nas quais e exigido um comportamento especifico;

Padrão Strategy

Definição do problema:* Quando se tem um método que e aplicado em diferentes

situações nas quais e exigido um comportamento especifico;

* Quando se tem uma família de classes com estruturas parecidas

mais que se diferem no seu comportamento;

Padrão Strategy

Definição do problema:* Quando se tem um método que e aplicado em diferentes

situações nas quais e exigido um comportamento especifico;

* Quando se tem uma família de classes com estruturas parecidas

mais que se diferem no seu comportamento;

* Quando se tem uma classe com muitos métodos complexos e

muitos comandos condicionais (if/else);

Padrão Strategy

Definição do problema:* Quando se tem um método que e aplicado em diferentes

situações nas quais e exigido um comportamento especifico;

* Quando se tem uma família de classes com estruturas parecidas

mais que se diferem no seu comportamento;

* Quando se tem uma classe com muitos métodos complexos e

muitos comandos condicionais (if/else);

* Quando se tem um algorítimo complexo que utiliza uma estrutura

de dados que não precisa ser conhecida por quem vai utiliza-lo;

Padrão Strategy

Definição do problema:* Quando se tem um método que e aplicado em diferentes

situações nas quais e exigido um comportamento especifico;

* Quando se tem uma família de classes com estruturas parecidas

mais que se diferem no seu comportamento;

* Quando se tem uma classe com muitos métodos complexos e

muitos comandos condicionais (if/else);

* Quando se tem um algorítimo complexo que utiliza uma estrutura

de dados que não precisa ser conhecida por quem vai utiliza-lo;

* Quando se tem operações comuns a uma serie de objetos de

classes diferente que contem pequenas variações;

Padrão Strategy

Exemplo de Uso:* Uma empresa da área de telecomunicações possui uma intranet de atendimento para todo o

Brasil e teve num dos seus módulos internos

Padrão Strategy

Exemplo de Uso:* Uma empresa da área de telecomunicações possui uma intranet de atendimento para todo o

Brasil e teve num dos seus módulos internos

* A intranet de atendimento dessa grande empresa de telecomunicações possui todo o

gerenciamento interno da empresa,

Padrão Strategy

Exemplo de Uso:* Uma empresa da área de telecomunicações possui uma intranet de atendimento para todo o

Brasil e teve num dos seus módulos internos

* A intranet de atendimento dessa grande empresa de telecomunicações possui todo o

gerenciamento interno da empresa,

* Funcionários que prestam atendimentos em CallCenters, Ilhas e Segmentos - Para cada tipo

de atendente o sistema configura os parâmetros necessários para um atendente específico

Padrão Strategy

Exemplo de Uso:* Uma empresa da área de telecomunicações possui uma intranet de atendimento para todo o

Brasil e teve num dos seus módulos internos

* A intranet de atendimento dessa grande empresa de telecomunicações possui todo o

gerenciamento interno da empresa,

* Funcionários que prestam atendimentos em CallCenters, Ilhas e Segmentos - Para cada tipo

de atendente o sistema configura os parâmetros necessários para um atendente específico

* Esses requisitos contém muitos estados, portanto indica à necessidade de aplicar o padrão

Strategy.

Padrão Strategy

Exemplo de Uso:* Uma empresa da área de telecomunicações possui uma intranet de atendimento para todo o

Brasil e teve num dos seus módulos internos

* A intranet de atendimento dessa grande empresa de telecomunicações possui todo o

gerenciamento interno da empresa,

* Funcionários que prestam atendimentos em CallCenters, Ilhas e Segmentos - Para cada tipo

de atendente o sistema configura os parâmetros necessários para um atendente específico

* Esses requisitos contém muitos estados, portanto indica à necessidade de aplicar o padrão

Strategy.

* Para atendente deve se a configuração para o atendente de um Call Center onde configura-

se tudo que esse atendente precisa

Padrão Strategy - Exemplo de Uso

Padrão Strategy - Exemplo de Uso

Padrão Strategy

Vantagens:* Facilita a troca e a escolha entre algoritmos utilizando uma

mesma função;

Padrão Strategy

Vantagens:* Facilita a troca e a escolha entre algoritmos utilizando uma

mesma função;

* Mais facilidade ao inserir um comportamento especifico sem ter

que recodificar grandes partes da aplicação;

Padrão Strategy

Vantagens:* Facilita a troca e a escolha entre algoritmos utilizando uma

mesma função;

* Mais facilidade ao inserir um comportamento especifico sem ter

que recodificar grandes partes da aplicação;

* Manutenção fica mais fácil;

Padrão Strategy

Vantagens:* Facilita a troca e a escolha entre algoritmos utilizando uma

mesma função;

* Mais facilidade ao inserir um comportamento especifico sem ter

que recodificar grandes partes da aplicação;

* Manutenção fica mais fácil;

* Permite um algoritmo ter muitas variações de um

comportamento;

Padrão Strategy

Vantagens:* Facilita a troca e a escolha entre algoritmos utilizando uma

mesma função;

* Mais facilidade ao inserir um comportamento especifico sem ter

que recodificar grandes partes da aplicação;

* Manutenção fica mais fácil;

* Permite um algoritmo ter muitas variações de um

comportamento;

* Possibilita escolher entre um algoritmo ou outro em tempo de

execução.

Padrão Strategy

Desvantagens:

* Algorítimos vão receber dados das suas classes de

contexto e o custo da comunicação entre o contexto e a

estrategia pode vir a ser muito grande;

Padrão Strategy

Desvantagens:

* Algorítimos vão receber dados das suas classes de

contexto e o custo da comunicação entre o contexto e a

estrategia pode vir a ser muito grande;

* Em certos casos contexto ira inicializar e carregar

parâmetros que nunca serão usados;

Padrão Strategy

Desvantagens:

* Algorítimos vão receber dados das suas classes de

contexto e o custo da comunicação entre o contexto e a

estrategia pode vir a ser muito grande;

* Em certos casos contexto ira inicializar e carregar

parâmetros que nunca serão usados;

* Dificuldade em utilizar corretamente o padrão.