Padrões de Projeto - Observer e Strategy

590 visualizações

Publicada em

Padrões de Projeto - Observer e Strategy

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
590
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
15
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Padrões de Projeto - Observer e Strategy

  1. 1. Padrões de Projeto Observer e Strategy João Carlos Ottobboni
  2. 2. Observer
  3. 3. Padrão Observer Objetivo: * Tem responsabilidade de propagar atualizações;
  4. 4. Padrão Observer Objetivo: * Tem responsabilidade de propagar atualizações; * Define dependência de um para muitos;
  5. 5. 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.
  6. 6. Padrão Observer Funcionamento: * É necessário construção de uma classe SUBJECT, que é responsável por atualizar seus dependentes;
  7. 7. 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;
  8. 8. 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;
  9. 9. Padrão Observer Definição do problema: * Quando uma modificação em um objeto requer a modificação em vários outros.
  10. 10. 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.
  11. 11. Padrão Observer Exemplos de Uso: * Uma empresa de mineração com vários funcionários;
  12. 12. 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;
  13. 13. 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;
  14. 14. Padrão Observer Exemplos de Uso:
  15. 15. Padrão Observer Exemplos de Uso:
  16. 16. Padrão Observer Vantagens: * Permite adicionar OBSERVERs sem modificar a classe SUBJECT;
  17. 17. Padrão Observer Vantagens: * Permite adicionar OBSERVERs sem modificar a classe SUBJECT; * Baixo acoplamento entre OBSERVER e SUBJECT;
  18. 18. 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;
  19. 19. 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.
  20. 20. Padrão Observer Desvantagens: * O uso excessivo do padrão pode causar sério impacto na performance;
  21. 21. 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;
  22. 22. Strategy
  23. 23. Padrão Strategy Objetivo: * Serve para definir e encapsular o algorítimo em um objeto;
  24. 24. Padrão Strategy Objetivo: * Serve para definir e encapsular o algorítimo em um objeto; * Fornece interfaces suficientes para suportar uma variedade de algoritmos;
  25. 25. Padrão Strategy Funcionamento:
  26. 26. 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.
  27. 27. 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;
  28. 28. 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;
  29. 29. 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);
  30. 30. 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;
  31. 31. 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;
  32. 32. 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
  33. 33. 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,
  34. 34. 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
  35. 35. 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.
  36. 36. 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
  37. 37. Padrão Strategy - Exemplo de Uso
  38. 38. Padrão Strategy - Exemplo de Uso
  39. 39. Padrão Strategy Vantagens: * Facilita a troca e a escolha entre algoritmos utilizando uma mesma função;
  40. 40. 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;
  41. 41. 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;
  42. 42. 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;
  43. 43. 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.
  44. 44. 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;
  45. 45. 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;
  46. 46. 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.

×