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

Java 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseJava 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De Classe
Regis Magalhães
 

Mais procurados (20)

10.Polimorfismo Java
10.Polimorfismo Java10.Polimorfismo Java
10.Polimorfismo Java
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
POO - 19 - Elementos Estáticos
POO - 19 - Elementos EstáticosPOO - 19 - Elementos Estáticos
POO - 19 - Elementos Estáticos
 
Algoritmo 04 - Estruturas de decisão
 Algoritmo 04 - Estruturas de decisão Algoritmo 04 - Estruturas de decisão
Algoritmo 04 - Estruturas de decisão
 
JAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOJAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTO
 
Padrões de Projeto - Observer
Padrões de Projeto - ObserverPadrões de Projeto - Observer
Padrões de Projeto - Observer
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
Por que PostgreSQL?
Por que PostgreSQL?Por que PostgreSQL?
Por que PostgreSQL?
 
1. introduccion a la programación orientada a objeto (poo)
1.  introduccion a la programación orientada a objeto (poo)1.  introduccion a la programación orientada a objeto (poo)
1. introduccion a la programación orientada a objeto (poo)
 
İleri Seviye T-SQL Programlama - Chapter 07
İleri Seviye T-SQL Programlama - Chapter 07İleri Seviye T-SQL Programlama - Chapter 07
İleri Seviye T-SQL Programlama - Chapter 07
 
Java 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseJava 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De Classe
 
Clase4 poo-uml
Clase4 poo-umlClase4 poo-uml
Clase4 poo-uml
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Árvores binárias balanceadas
Árvores binárias balanceadasÁrvores binárias balanceadas
Árvores binárias balanceadas
 
Aula 5 banco de dados
Aula 5   banco de dadosAula 5   banco de dados
Aula 5 banco de dados
 
OCL en Arquitecturas dirigidas por Modelos
OCL en Arquitecturas dirigidas por ModelosOCL en Arquitecturas dirigidas por Modelos
OCL en Arquitecturas dirigidas por Modelos
 
Aula02
Aula02Aula02
Aula02
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
POO - 06 - Encapsulamento
POO - 06 - EncapsulamentoPOO - 06 - Encapsulamento
POO - 06 - Encapsulamento
 

Semelhante a Padrões de Projeto - 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 reais
Michel Graciano
 
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
Tiago Vizoto
 
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
Adriano Teixeira de Souza
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos
Carlos Santos
 

Semelhante a Padrões de Projeto - 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
 
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
 
ApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.pptApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
 

Último

Último (9)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 

Padrões de Projeto - 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.