SlideShare uma empresa Scribd logo
1 de 46
Padrões de Projeto
Observer 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.

Mais conteúdo relacionado

Mais procurados

Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)programadorjavablog
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoVinícius de Paula
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosOrlando Junior
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
3. modelo entidad relación extendido
3. modelo entidad relación extendido3. modelo entidad relación extendido
3. modelo entidad relación extendidoGalo Anzules
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosLeonardo Melo Santos
 
15 padrões de mensageria para integração de sistemas
15 padrões de mensageria para integração de sistemas15 padrões de mensageria para integração de sistemas
15 padrões de mensageria para integração de sistemasHelder da Rocha
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herenciajlmanmons
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgeLorran Pegoretti
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
 

Mais procurados (20)

Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)
 
Observer: Patrón de diseño
Observer: Patrón de diseñoObserver: Patrón de diseño
Observer: Patrón de diseño
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
Classes abstratas e interfaces
Classes abstratas e interfacesClasses abstratas e interfaces
Classes abstratas e interfaces
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de Projeto
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Comandos SQL
Comandos SQLComandos SQL
Comandos SQL
 
Ejercicios resueltos de_pl-sql
Ejercicios resueltos de_pl-sqlEjercicios resueltos de_pl-sql
Ejercicios resueltos de_pl-sql
 
3. modelo entidad relación extendido
3. modelo entidad relación extendido3. modelo entidad relación extendido
3. modelo entidad relación extendido
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetos
 
15 padrões de mensageria para integração de sistemas
15 padrões de mensageria para integração de sistemas15 padrões de mensageria para integração de sistemas
15 padrões de mensageria para integração de sistemas
 
JAVA - Matrizes
JAVA - MatrizesJAVA - Matrizes
JAVA - Matrizes
 
Modelo de entidad relación extendido
Modelo de entidad relación extendidoModelo de entidad relación extendido
Modelo de entidad relación extendido
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
 
ieee 830
 ieee 830 ieee 830
ieee 830
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herencia
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Ejercicios-sql-1-14
Ejercicios-sql-1-14Ejercicios-sql-1-14
Ejercicios-sql-1-14
 

Semelhante a Padrões Observer e Strategy

Introdução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reaisIntrodução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reaisMichel Graciano
 
Padrão de Projeto Observer
Padrão de Projeto ObserverPadrão de Projeto Observer
Padrão de Projeto ObserverLuiza Uira
 
Padrões de Projeto: Adapter
Padrões de Projeto: AdapterPadrões de Projeto: Adapter
Padrões de Projeto: AdapterMessias Batista
 
20230804_266_ClubServicenow_Catalog.pdf
20230804_266_ClubServicenow_Catalog.pdf20230804_266_ClubServicenow_Catalog.pdf
20230804_266_ClubServicenow_Catalog.pdfTiago Macul
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Renato Groff
 
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Renato Groff
 
Gerenciando Clusters Kubernetes usando Cluster API, Azure Arc e GitOps
Gerenciando Clusters Kubernetes usando Cluster API, Azure Arc e GitOpsGerenciando Clusters Kubernetes usando Cluster API, Azure Arc e GitOps
Gerenciando Clusters Kubernetes usando Cluster API, Azure Arc e GitOpsJorge Arteiro
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"Cesar Romero
 
Padrões de projetos
Padrões de projetosPadrões de projetos
Padrões de projetosGustavo Souza
 
Aula 2 modelo de processo de software1
Aula 2   modelo de processo de software1Aula 2   modelo de processo de software1
Aula 2 modelo de processo de software1Tiago Vizoto
 
.NET Core e ASP.NET Core: Dicas e Truques
.NET Core e ASP.NET Core: Dicas e Truques.NET Core e ASP.NET Core: Dicas e Truques
.NET Core e ASP.NET Core: Dicas e TruquesRenato Groff
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleAdriano Teixeira de Souza
 
Apresentação Flisol 2016
Apresentação Flisol 2016Apresentação Flisol 2016
Apresentação Flisol 2016Laryssa Muniz
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - SubalgoritmosCarlos Santos
 
ApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.pptApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.pptGiacomelliFerrarezzi
 

Semelhante a Padrões Observer e Strategy (20)

Introdução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reaisIntrodução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reais
 
Padrão de Projeto Observer
Padrão de Projeto ObserverPadrão de Projeto Observer
Padrão de Projeto Observer
 
Padrões de Projeto: Adapter
Padrões de Projeto: AdapterPadrões de Projeto: Adapter
Padrões de Projeto: Adapter
 
Apres s4
Apres s4 Apres s4
Apres s4
 
MDA-gerenciamento
MDA-gerenciamentoMDA-gerenciamento
MDA-gerenciamento
 
ASP.NET MVC 5.x
ASP.NET MVC 5.xASP.NET MVC 5.x
ASP.NET MVC 5.x
 
20230804_266_ClubServicenow_Catalog.pdf
20230804_266_ClubServicenow_Catalog.pdf20230804_266_ClubServicenow_Catalog.pdf
20230804_266_ClubServicenow_Catalog.pdf
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016
 
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
 
Gerenciando Clusters Kubernetes usando Cluster API, Azure Arc e GitOps
Gerenciando Clusters Kubernetes usando Cluster API, Azure Arc e GitOpsGerenciando Clusters Kubernetes usando Cluster API, Azure Arc e GitOps
Gerenciando Clusters Kubernetes usando Cluster API, Azure Arc e GitOps
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"
 
Padrões de projetos
Padrões de projetosPadrões de projetos
Padrões de projetos
 
Aula 2 modelo de processo de software1
Aula 2   modelo de processo de software1Aula 2   modelo de processo de software1
Aula 2 modelo de processo de software1
 
.NET Core e ASP.NET Core: Dicas e Truques
.NET Core e ASP.NET Core: Dicas e Truques.NET Core e ASP.NET Core: Dicas e Truques
.NET Core e ASP.NET Core: Dicas e Truques
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de Controle
 
Aula05 frameworks
Aula05 frameworksAula05 frameworks
Aula05 frameworks
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Apresentação Flisol 2016
Apresentação Flisol 2016Apresentação Flisol 2016
Apresentação Flisol 2016
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos
 
ApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.pptApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
 

Padrões Observer e Strategy

  • 1. Padrões de Projeto Observer e Strategy João Carlos Ottobboni
  • 3. Padrão Observer Objetivo: * Tem responsabilidade de propagar atualizações;
  • 4. Padrão Observer Objetivo: * Tem responsabilidade de propagar atualizações; * Define dependência de um para muitos;
  • 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. Padrão Observer Funcionamento: * É necessário construção de uma classe SUBJECT, que é responsável por atualizar seus dependentes;
  • 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.
  • 11. Padrão Observer Exemplos de Uso: * Uma empresa de mineração com vários funcionários;
  • 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;
  • 16. Padrão Observer Vantagens: * Permite adicionar OBSERVERs sem modificar a classe SUBJECT;
  • 17. Padrão Observer Vantagens: * Permite adicionar OBSERVERs sem modificar a classe SUBJECT; * Baixo acoplamento entre OBSERVER e SUBJECT;
  • 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.
  • 20. Padrão Observer Desvantagens: * O uso excessivo do padrão pode causar sério impacto na performance;
  • 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;
  • 23. Padrão Strategy Objetivo: * Serve para definir e encapsular o algorítimo em um objeto;
  • 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
  • 37. Padrão Strategy - Exemplo de Uso
  • 38. Padrão Strategy - Exemplo de Uso
  • 39. Padrão Strategy Vantagens: * Facilita a troca e a escolha entre algoritmos utilizando uma mesma função;
  • 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.