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

Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de SoftwareAricelio Souza
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as CodeRobert Greiner
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em JavaDenis L Presciliano
 
Laravel introduction
Laravel introductionLaravel introduction
Laravel introductionSimon Funk
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Aula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - ProcessosAula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - ProcessosMessias Batista
 
Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCLuiz Ricardo Silva
 
Configurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ideConfigurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ideferosorno
 
HTML+&+CSS++Fundamentos.pdf
HTML+&+CSS++Fundamentos.pdfHTML+&+CSS++Fundamentos.pdf
HTML+&+CSS++Fundamentos.pdfCesar Braz
 
Service Oriented Architecture
Service Oriented ArchitectureService Oriented Architecture
Service Oriented ArchitectureSandeep Ganji
 
Introduction To Terraform
Introduction To TerraformIntroduction To Terraform
Introduction To TerraformSasitha Iresh
 
diagrama de componentes
diagrama de componentesdiagrama de componentes
diagrama de componenteselliando dias
 
Software Architecture Views and Viewpoints
Software Architecture Views and ViewpointsSoftware Architecture Views and Viewpoints
Software Architecture Views and ViewpointsHenry Muccini
 

Mais procurados (20)

Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
Diagramas de casos de uso - aula 2
Diagramas de casos de uso - aula 2Diagramas de casos de uso - aula 2
Diagramas de casos de uso - aula 2
 
Terraform
TerraformTerraform
Terraform
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em Java
 
Terraform day1
Terraform day1Terraform day1
Terraform day1
 
Laravel introduction
Laravel introductionLaravel introduction
Laravel introduction
 
Ansible-cours .pdf
Ansible-cours .pdfAnsible-cours .pdf
Ansible-cours .pdf
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Aula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - ProcessosAula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - Processos
 
Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBC
 
infrastructure as code
infrastructure as codeinfrastructure as code
infrastructure as code
 
Configurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ideConfigurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ide
 
HTML+&+CSS++Fundamentos.pdf
HTML+&+CSS++Fundamentos.pdfHTML+&+CSS++Fundamentos.pdf
HTML+&+CSS++Fundamentos.pdf
 
Service Oriented Architecture
Service Oriented ArchitectureService Oriented Architecture
Service Oriented Architecture
 
Introduction To Terraform
Introduction To TerraformIntroduction To Terraform
Introduction To Terraform
 
diagrama de componentes
diagrama de componentesdiagrama de componentes
diagrama de componentes
 
Software Architecture Views and Viewpoints
Software Architecture Views and ViewpointsSoftware Architecture Views and Viewpoints
Software Architecture Views and Viewpoints
 

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
 
As vantagens e desvantagens da aplicação de padrões de projeto
As vantagens e desvantagens da aplicação de padrões de projetoAs vantagens e desvantagens da aplicação de padrões de projeto
As vantagens e desvantagens da aplicação de padrões de projetoGabriel Galdino
 
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
 

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
 
As vantagens e desvantagens da aplicação de padrões de projeto
As vantagens e desvantagens da aplicação de padrões de projetoAs vantagens e desvantagens da aplicação de padrões de projeto
As vantagens e desvantagens da aplicação de padrões de projeto
 
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
 

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.