SlideShare uma empresa Scribd logo
Design Patterns
Mediator
Gustavo
Bellini
Bigardi
https://about.me/gbbigard
i
Gerente de Arquitetura – CI&T
Microsoft MVP
DESIGN PATTERNS
• Repository
• Chain of Responsability
• Command
• State
• Strategy
Estes são alguns dos mais conhecidos,
mas temos quantos? 6? 10?
Existem vários design patterns, sendo que no próprio
livro do GoF (Gang of Four) temos 23 patterns
apresentados.
MEDIATOR
• Padrão comportamental
• Organizar comunicação com baixo
acoplamento
• Permite uma melhor organização da
aplicação e separação do código em
responsabilidade única
MEDIATOR
Que tal um exemplo mais próximo do mundo real?
MEDIATOR
MEDIATOR - UML
Vantagens
• Reforça o uso do S do SOLID, criando classes
menores e com responsabilidade única
(handlers);
• Reforça também o O do Solide, de Open / Closed
Principle, onde novos mediadores ou handlers
podem ser inclusos sem alteração nos existentes;
• Reduz o acoplamento entre vários componentes
e serviços;
• Permite um maior reuso de componentes e
serviços;
• Muito utilizado com os padrões CQS e CQRS;
Desvantagens
• Dependendo da abordagem, seu objeto
Mediator pode acumular muitas
responsabilidades;
• Aumento do código produzido em casos
de tarefas mais simples como CRUD;
• Uso de eventos / notificações pode
aumentar a complexidade do sistema;
Demo 1
Vamos aplicar o pattern sem auxílio de bibliotecas
Demo 2
Vamos aplicar o pattern utilizando a biblioteca MediatR
Demo – Códigos Fonte
github.com/gbbigardi/design-patterns-samples
Slides
www.slideshare.net/gbbigardi/canal-dotnet-design-patterns-mediator
Fim

Mais conteúdo relacionado

Semelhante a Canal DotNet - Design Patterns - Mediator

Escalando Agilidade e além: DevOps e o novo ciclo do software
Escalando Agilidade e além: DevOps e o novo ciclo do softwareEscalando Agilidade e além: DevOps e o novo ciclo do software
Escalando Agilidade e além: DevOps e o novo ciclo do softwareGustavo Grillo
 
Desenvolvimento web com (cms) Drupal
Desenvolvimento web com (cms) DrupalDesenvolvimento web com (cms) Drupal
Desenvolvimento web com (cms) DrupalEmerson Barros
 
Portifolio de evidencias conceitos de programacao
Portifolio de evidencias  conceitos de programacaoPortifolio de evidencias  conceitos de programacao
Portifolio de evidencias conceitos de programacaoadrianodownload
 
Arquitetura monolítica à orientação a serviços
Arquitetura monolítica à orientação a serviçosArquitetura monolítica à orientação a serviços
Arquitetura monolítica à orientação a serviçosRyan Padilha
 
Implementando Entrega Contínua
Implementando Entrega ContínuaImplementando Entrega Contínua
Implementando Entrega ContínuaMarco Valtas
 
Implementando Entrega Contínua - Marco Valtas
Implementando Entrega Contínua - Marco ValtasImplementando Entrega Contínua - Marco Valtas
Implementando Entrega Contínua - Marco ValtasThoughtworks
 
Feature Driven Development – Desenvolvimento Guiado por Funcionalidades
Feature Driven Development – Desenvolvimento Guiado por FuncionalidadesFeature Driven Development – Desenvolvimento Guiado por Funcionalidades
Feature Driven Development – Desenvolvimento Guiado por FuncionalidadesHiury Araújo
 
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOpsSeja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOpsValdomiro Bilharvas
 
Programação orientada à objetos & mvc
Programação orientada à objetos & mvcProgramação orientada à objetos & mvc
Programação orientada à objetos & mvcJhordam Siqueira
 
Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Filipe Portes
 
Engenharia De Software e O Software Livre
Engenharia De Software e O Software LivreEngenharia De Software e O Software Livre
Engenharia De Software e O Software LivreFabio Sperotto
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
 
Apresentação estrela vs cmmi nivel 2
Apresentação estrela vs cmmi nivel 2Apresentação estrela vs cmmi nivel 2
Apresentação estrela vs cmmi nivel 2Fernando Vargas
 
Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...
Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...
Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...Pedro Castilho
 

Semelhante a Canal DotNet - Design Patterns - Mediator (20)

Escalando Agilidade e além: DevOps e o novo ciclo do software
Escalando Agilidade e além: DevOps e o novo ciclo do softwareEscalando Agilidade e além: DevOps e o novo ciclo do software
Escalando Agilidade e além: DevOps e o novo ciclo do software
 
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
 
Desenvolvimento web com (cms) Drupal
Desenvolvimento web com (cms) DrupalDesenvolvimento web com (cms) Drupal
Desenvolvimento web com (cms) Drupal
 
Portifolio de evidencias conceitos de programacao
Portifolio de evidencias  conceitos de programacaoPortifolio de evidencias  conceitos de programacao
Portifolio de evidencias conceitos de programacao
 
Arquitetura monolítica à orientação a serviços
Arquitetura monolítica à orientação a serviçosArquitetura monolítica à orientação a serviços
Arquitetura monolítica à orientação a serviços
 
Implementando Entrega Contínua
Implementando Entrega ContínuaImplementando Entrega Contínua
Implementando Entrega Contínua
 
Implementando Entrega Contínua - Marco Valtas
Implementando Entrega Contínua - Marco ValtasImplementando Entrega Contínua - Marco Valtas
Implementando Entrega Contínua - Marco Valtas
 
Feature Driven Development – Desenvolvimento Guiado por Funcionalidades
Feature Driven Development – Desenvolvimento Guiado por FuncionalidadesFeature Driven Development – Desenvolvimento Guiado por Funcionalidades
Feature Driven Development – Desenvolvimento Guiado por Funcionalidades
 
Métodos ágeis de desenvolvimento2
Métodos ágeis de desenvolvimento2Métodos ágeis de desenvolvimento2
Métodos ágeis de desenvolvimento2
 
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOpsSeja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
 
Metodologias de desenvolvimento
Metodologias de desenvolvimentoMetodologias de desenvolvimento
Metodologias de desenvolvimento
 
Programação orientada à objetos & mvc
Programação orientada à objetos & mvcProgramação orientada à objetos & mvc
Programação orientada à objetos & mvc
 
Outras Metodologias Ágeis Parte 3
Outras Metodologias Ágeis Parte 3Outras Metodologias Ágeis Parte 3
Outras Metodologias Ágeis Parte 3
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014
 
Engenharia De Software e O Software Livre
Engenharia De Software e O Software LivreEngenharia De Software e O Software Livre
Engenharia De Software e O Software Livre
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
Monografia-Devops
Monografia-DevopsMonografia-Devops
Monografia-Devops
 
Apresentação estrela vs cmmi nivel 2
Apresentação estrela vs cmmi nivel 2Apresentação estrela vs cmmi nivel 2
Apresentação estrela vs cmmi nivel 2
 
Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...
Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...
Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...
 

Mais de Gustavo Bellini Bigardi

Aplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache KafkaAplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache KafkaGustavo Bellini Bigardi
 
MVP Week 2020 - Aplicações Modernas com Blazor WASM
MVP Week 2020 - Aplicações Modernas com Blazor WASMMVP Week 2020 - Aplicações Modernas com Blazor WASM
MVP Week 2020 - Aplicações Modernas com Blazor WASMGustavo Bellini Bigardi
 
Codificando Night Week - Blazor, tornando o fullstack C# possível!
Codificando Night Week - Blazor, tornando o fullstack C# possível!Codificando Night Week - Blazor, tornando o fullstack C# possível!
Codificando Night Week - Blazor, tornando o fullstack C# possível!Gustavo Bellini Bigardi
 
Ignite The Tour 2019 - Sao Paulo - Blazor, AI & Blockchain
Ignite The Tour 2019 - Sao Paulo - Blazor, AI & BlockchainIgnite The Tour 2019 - Sao Paulo - Blazor, AI & Blockchain
Ignite The Tour 2019 - Sao Paulo - Blazor, AI & BlockchainGustavo Bellini Bigardi
 
Microsservicos serverles combinacao perfeita
Microsservicos serverles combinacao perfeitaMicrosservicos serverles combinacao perfeita
Microsservicos serverles combinacao perfeitaGustavo Bellini Bigardi
 
Microsservicos com node js + azure functions + azure service bus
Microsservicos com node js + azure functions + azure service busMicrosservicos com node js + azure functions + azure service bus
Microsservicos com node js + azure functions + azure service busGustavo Bellini Bigardi
 
Microsserviços com Serverles e Azure Functions
Microsserviços com Serverles e Azure FunctionsMicrosserviços com Serverles e Azure Functions
Microsserviços com Serverles e Azure FunctionsGustavo Bellini Bigardi
 
Blazor and azure functions for serverless websites
Blazor and azure functions for serverless websitesBlazor and azure functions for serverless websites
Blazor and azure functions for serverless websitesGustavo Bellini Bigardi
 
Implementando rapidamente web apps com blazor e serverless
Implementando rapidamente web apps com blazor e serverlessImplementando rapidamente web apps com blazor e serverless
Implementando rapidamente web apps com blazor e serverlessGustavo Bellini Bigardi
 
Distribuindo seu app Blazor no Azure com Storage + CDN
Distribuindo seu app Blazor no Azure com Storage + CDNDistribuindo seu app Blazor no Azure com Storage + CDN
Distribuindo seu app Blazor no Azure com Storage + CDNGustavo Bellini Bigardi
 
Esqueca o ETL! Estraindo métricas com CosmosDB e Serverless
Esqueca o ETL! Estraindo métricas com CosmosDB e ServerlessEsqueca o ETL! Estraindo métricas com CosmosDB e Serverless
Esqueca o ETL! Estraindo métricas com CosmosDB e ServerlessGustavo Bellini Bigardi
 
Blazor, web assembly e o futuro do browser
Blazor, web assembly e o futuro do browserBlazor, web assembly e o futuro do browser
Blazor, web assembly e o futuro do browserGustavo Bellini Bigardi
 
Serverless com azure functions e node js
Serverless com azure functions e node jsServerless com azure functions e node js
Serverless com azure functions e node jsGustavo Bellini Bigardi
 
CapiConf Online - Utilizando reconhecimento facial para segurança em aplicações
CapiConf Online - Utilizando reconhecimento facial para segurança em aplicaçõesCapiConf Online - Utilizando reconhecimento facial para segurança em aplicações
CapiConf Online - Utilizando reconhecimento facial para segurança em aplicaçõesGustavo Bellini Bigardi
 
Meetup - FC Nuvem - Serviços Cognitivos
Meetup - FC Nuvem - Serviços CognitivosMeetup - FC Nuvem - Serviços Cognitivos
Meetup - FC Nuvem - Serviços CognitivosGustavo Bellini Bigardi
 
7Masters - PWA - Publishing using Universal Windows Apps
7Masters - PWA - Publishing using Universal Windows Apps7Masters - PWA - Publishing using Universal Windows Apps
7Masters - PWA - Publishing using Universal Windows AppsGustavo Bellini Bigardi
 

Mais de Gustavo Bellini Bigardi (20)

Aplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache KafkaAplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache Kafka
 
Azure Labs - Publicando APIs no Azure
Azure Labs - Publicando APIs no AzureAzure Labs - Publicando APIs no Azure
Azure Labs - Publicando APIs no Azure
 
MVP Week 2020 - Aplicações Modernas com Blazor WASM
MVP Week 2020 - Aplicações Modernas com Blazor WASMMVP Week 2020 - Aplicações Modernas com Blazor WASM
MVP Week 2020 - Aplicações Modernas com Blazor WASM
 
Codificando Night Week - Blazor, tornando o fullstack C# possível!
Codificando Night Week - Blazor, tornando o fullstack C# possível!Codificando Night Week - Blazor, tornando o fullstack C# possível!
Codificando Night Week - Blazor, tornando o fullstack C# possível!
 
Ignite The Tour 2019 - Sao Paulo - Blazor, AI & Blockchain
Ignite The Tour 2019 - Sao Paulo - Blazor, AI & BlockchainIgnite The Tour 2019 - Sao Paulo - Blazor, AI & Blockchain
Ignite The Tour 2019 - Sao Paulo - Blazor, AI & Blockchain
 
DevPira2019 - Blazor
DevPira2019 - BlazorDevPira2019 - Blazor
DevPira2019 - Blazor
 
Dev week2019 blazor
Dev week2019 blazorDev week2019 blazor
Dev week2019 blazor
 
Microsservicos serverles combinacao perfeita
Microsservicos serverles combinacao perfeitaMicrosservicos serverles combinacao perfeita
Microsservicos serverles combinacao perfeita
 
Microsservicos com node js + azure functions + azure service bus
Microsservicos com node js + azure functions + azure service busMicrosservicos com node js + azure functions + azure service bus
Microsservicos com node js + azure functions + azure service bus
 
Microsserviços com Serverles e Azure Functions
Microsserviços com Serverles e Azure FunctionsMicrosserviços com Serverles e Azure Functions
Microsserviços com Serverles e Azure Functions
 
Blazor and azure functions for serverless websites
Blazor and azure functions for serverless websitesBlazor and azure functions for serverless websites
Blazor and azure functions for serverless websites
 
Implementando rapidamente web apps com blazor e serverless
Implementando rapidamente web apps com blazor e serverlessImplementando rapidamente web apps com blazor e serverless
Implementando rapidamente web apps com blazor e serverless
 
Distribuindo seu app Blazor no Azure com Storage + CDN
Distribuindo seu app Blazor no Azure com Storage + CDNDistribuindo seu app Blazor no Azure com Storage + CDN
Distribuindo seu app Blazor no Azure com Storage + CDN
 
Esqueca o ETL! Estraindo métricas com CosmosDB e Serverless
Esqueca o ETL! Estraindo métricas com CosmosDB e ServerlessEsqueca o ETL! Estraindo métricas com CosmosDB e Serverless
Esqueca o ETL! Estraindo métricas com CosmosDB e Serverless
 
Blazor, web assembly e o futuro do browser
Blazor, web assembly e o futuro do browserBlazor, web assembly e o futuro do browser
Blazor, web assembly e o futuro do browser
 
Serverless com azure functions e node js
Serverless com azure functions e node jsServerless com azure functions e node js
Serverless com azure functions e node js
 
Fullstack C# com Blazor
Fullstack C# com BlazorFullstack C# com Blazor
Fullstack C# com Blazor
 
CapiConf Online - Utilizando reconhecimento facial para segurança em aplicações
CapiConf Online - Utilizando reconhecimento facial para segurança em aplicaçõesCapiConf Online - Utilizando reconhecimento facial para segurança em aplicações
CapiConf Online - Utilizando reconhecimento facial para segurança em aplicações
 
Meetup - FC Nuvem - Serviços Cognitivos
Meetup - FC Nuvem - Serviços CognitivosMeetup - FC Nuvem - Serviços Cognitivos
Meetup - FC Nuvem - Serviços Cognitivos
 
7Masters - PWA - Publishing using Universal Windows Apps
7Masters - PWA - Publishing using Universal Windows Apps7Masters - PWA - Publishing using Universal Windows Apps
7Masters - PWA - Publishing using Universal Windows Apps
 

Canal DotNet - Design Patterns - Mediator