O documento descreve os padrões Observer e Strategy. Observer permite que objetos sejam notificados automaticamente sobre mudanças em outros objetos, enquanto Strategy encapsula algoritmos diferentes para serem usados de forma intercambiável.
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.
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. 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. Padrão Observer
Definição do problema:
* Quando uma modificação em um objeto requer a modificação em
vários outros.
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.
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. 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;
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. 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.
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;
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;
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
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. 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. 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. 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. 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. 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. 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.