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

Design Pattern - Observer Pattern
Design Pattern - Observer PatternDesign Pattern - Observer Pattern
Design Pattern - Observer PatternMudasir Qazi
 
Design Pattern - MVC, MVP and MVVM
Design Pattern - MVC, MVP and MVVMDesign Pattern - MVC, MVP and MVVM
Design Pattern - MVC, MVP and MVVMMudasir Qazi
 
서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)Amazon Web Services Korea
 
6.Flow control
6.Flow control6.Flow control
6.Flow controlUsableLabs
 
AWS Expert Online appsyncを使ったServerlessアーキテクチャ
AWS Expert Online appsyncを使ったServerlessアーキテクチャAWS Expert Online appsyncを使ったServerlessアーキテクチャ
AWS Expert Online appsyncを使ったServerlessアーキテクチャAmazon Web Services Japan
 
AWS Summit Seoul 2023 | AWS로 구축한 피플펀드의 신용평가 MLOps 플랫폼 개발 여정
AWS Summit Seoul 2023 | AWS로 구축한 피플펀드의 신용평가 MLOps 플랫폼 개발 여정AWS Summit Seoul 2023 | AWS로 구축한 피플펀드의 신용평가 MLOps 플랫폼 개발 여정
AWS Summit Seoul 2023 | AWS로 구축한 피플펀드의 신용평가 MLOps 플랫폼 개발 여정Amazon Web Services Korea
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 
Presto ベースのマネージドサービス Amazon Athena
Presto ベースのマネージドサービス Amazon AthenaPresto ベースのマネージドサービス Amazon Athena
Presto ベースのマネージドサービス Amazon AthenaAmazon Web Services Japan
 
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)Marcello Thiry
 
No Hassle NoSQL - Amazon DynamoDB & Amazon DocumentDB | AWS Summit Tel Aviv ...
 No Hassle NoSQL - Amazon DynamoDB & Amazon DocumentDB | AWS Summit Tel Aviv ... No Hassle NoSQL - Amazon DynamoDB & Amazon DocumentDB | AWS Summit Tel Aviv ...
No Hassle NoSQL - Amazon DynamoDB & Amazon DocumentDB | AWS Summit Tel Aviv ...Amazon Web Services
 
Transformational Design Thinking - Aula 1
Transformational Design Thinking - Aula 1Transformational Design Thinking - Aula 1
Transformational Design Thinking - Aula 1Lu Terceiro
 

Mais procurados (20)

Design Pattern - Observer Pattern
Design Pattern - Observer PatternDesign Pattern - Observer Pattern
Design Pattern - Observer Pattern
 
Observer pattern
Observer patternObserver pattern
Observer pattern
 
Design Pattern - MVC, MVP and MVVM
Design Pattern - MVC, MVP and MVVMDesign Pattern - MVC, MVP and MVVM
Design Pattern - MVC, MVP and MVVM
 
서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
 
6.Flow control
6.Flow control6.Flow control
6.Flow control
 
AWS Expert Online appsyncを使ったServerlessアーキテクチャ
AWS Expert Online appsyncを使ったServerlessアーキテクチャAWS Expert Online appsyncを使ったServerlessアーキテクチャ
AWS Expert Online appsyncを使ったServerlessアーキテクチャ
 
AWS Summit Seoul 2023 | AWS로 구축한 피플펀드의 신용평가 MLOps 플랫폼 개발 여정
AWS Summit Seoul 2023 | AWS로 구축한 피플펀드의 신용평가 MLOps 플랫폼 개발 여정AWS Summit Seoul 2023 | AWS로 구축한 피플펀드의 신용평가 MLOps 플랫폼 개발 여정
AWS Summit Seoul 2023 | AWS로 구축한 피플펀드의 신용평가 MLOps 플랫폼 개발 여정
 
Mediator pattern
Mediator patternMediator pattern
Mediator pattern
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
Presto ベースのマネージドサービス Amazon Athena
Presto ベースのマネージドサービス Amazon AthenaPresto ベースのマネージドサービス Amazon Athena
Presto ベースのマネージドサービス Amazon Athena
 
Observer Pattern
Observer PatternObserver Pattern
Observer Pattern
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Adapter Design Pattern
Adapter Design PatternAdapter Design Pattern
Adapter Design Pattern
 
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
 
POO - 19 - Elementos Estáticos
POO - 19 - Elementos EstáticosPOO - 19 - Elementos Estáticos
POO - 19 - Elementos Estáticos
 
Design Patterns (Examples in .NET)
Design Patterns (Examples in .NET)Design Patterns (Examples in .NET)
Design Patterns (Examples in .NET)
 
No Hassle NoSQL - Amazon DynamoDB & Amazon DocumentDB | AWS Summit Tel Aviv ...
 No Hassle NoSQL - Amazon DynamoDB & Amazon DocumentDB | AWS Summit Tel Aviv ... No Hassle NoSQL - Amazon DynamoDB & Amazon DocumentDB | AWS Summit Tel Aviv ...
No Hassle NoSQL - Amazon DynamoDB & Amazon DocumentDB | AWS Summit Tel Aviv ...
 
Transformational Design Thinking - Aula 1
Transformational Design Thinking - Aula 1Transformational Design Thinking - Aula 1
Transformational Design Thinking - Aula 1
 

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 reaisMichel Graciano
 
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
 
ApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.pptApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.pptGiacomelliFerrarezzi
 

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

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.docx2m Assessoria
 
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 CalisthenicsDanilo Pinotti
 
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.pdfLuisKitota
 
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.docx2m Assessoria
 
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.docx2m Assessoria
 
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 exemploDanilo Pinotti
 
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.pdfSamaraLunas
 
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.docx2m Assessoria
 

Último (8)

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
 
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
 
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 - 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
 
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
 
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
 
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
 
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
 

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.