View
60
Download
1
Category
Preview:
Citation preview
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.
Recommended