DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma...
Transcript of DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma...
![Page 1: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/1.jpg)
I
1
DESIGN PATTERNSComo evitar problemas no futuro
![Page 2: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/2.jpg)
2
Zalba MonteiroDesenvolvedora Full Stack
Desenvolvedora de software há 7 anos, atualmente trabalhando na CWI Software.
Amante de tecnologias que envolvem o universo JavaScript, entusiasta de iniciativas de empoderamento de pessoas negras e protagonismo feminino. Potterhead sim!! Feminista sim!!!
E entre um código e outro, ainda dá tempo de tomar um bom café, fazer uma tatuagem ou cozinhar para os amigos.
![Page 3: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/3.jpg)
3
Design Pattern é uma solução reutilizável geral para um problema que ocorre com frequência dentro de um determinado contexto no projeto de software
![Page 4: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/4.jpg)
4
NodeJSvs Outros Frameworks
![Page 5: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/5.jpg)
5
Node.js é extremamente flexível e adaptável à necessidade da aplicação e sua ideia de estrutura de projetos.
![Page 6: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/6.jpg)
6
Anti-patternsmais comuns em Node.js
![Page 7: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/7.jpg)
7
![Page 8: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/8.jpg)
8
1ª CiladaNode.js é JavaScript...
![Page 9: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/9.jpg)
9
Portanto, é assíncrono...
O que é algo muito legal, mas, nem sempre, principalmente no desenvolvimento server-side.
![Page 10: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/10.jpg)
10
2ª CiladaPromises e Callback Hell
![Page 11: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/11.jpg)
11
Atenção!
Não é porque você vai usar promisses que não vai precisar ficar de olho no callback hell.
![Page 12: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/12.jpg)
12
3ª CiladaTudo que vai, volta...
![Page 13: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/13.jpg)
13
Esquecer o return...
![Page 14: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/14.jpg)
14
Design PatternsAlguns tipos mais populares
![Page 15: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/15.jpg)
15
Singleton especifica que apenas uma instância da classe pode existir, e esta será utilizada por toda a aplicação.Dessa forma, temos apenas um ponto de acesso central a esta instância da classe.
![Page 16: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/16.jpg)
16
Quando usar?Para controlar a concorrência de acesso a recursos compartilhados;
Para uma classe utilizada com frequência por várias partes distintas do sistema, e essa classe não gerencia nenhum estado da aplicação.
![Page 17: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/17.jpg)
17
Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado, todos seus dependentes são notificados e atualizados automaticamente.Observer é também chamado de Publisher-Subscriber, Event Generator e Dependents.
![Page 18: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/18.jpg)
18
Quando usar?Quando existe a necessidade de fazer com que um conjunto de objetos seja notificado e atualizado automaticamente após um determinado evento no sistema;
Cuidado: a desvantagem é que usar este padrão de forma indiscriminada pode causar sério impacto na performance do sistema.
![Page 19: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/19.jpg)
19
Factory é um objeto responsável por criar e entregar outros objetos baseados nos parâmetros de entrada.
![Page 20: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/20.jpg)
Permite interfaces para criar objetos sem expor a criação lógica para o cliente.
Permite interfaces para criar objetos, mas permite subclasses para determinar qual classe instanciar.
Já uma fábrica abstrata é uma interface para criar objetos relacionados sem especificar/expor as suas classes.
Simples Método Abstrato
20
3 variações do padrão Factory
![Page 21: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/21.jpg)
21
VantagemFactory (fábrica) permite-nos ter uma localização centralizada onde todos os nossos objetos são criados.
![Page 22: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/22.jpg)
22
Injeção de dependência é quando uma ou mais dependências (ou serviços) são injetadas, ou passadas por referência, num objeto dependente.
![Page 23: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/23.jpg)
23
Deixar seu código desacoplado;
Facilitar nos testes e isolamento dos componentes;
Aplicável em cenários onde podemos trocar o comportamento do sistema, utilizando classes que realizam as mesmas funcionalidades, porém de fontes diferentes.
Vantagens
![Page 24: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/24.jpg)
24
Quando usar?Quando existe a possibilidade de trocar um comportamento no sistema em determinado componente, ou quando você deseja isolar esses componentes para testes.
Lembre-se: um padrão é aplicado para um problema decorrente em determinados cenários. Se você não tiver essa necessidade, não tem o porquê aplicar esse padrão.
![Page 25: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/25.jpg)
25
Um padrão de código ruim é melhor que nenhum
![Page 26: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/26.jpg)
26
ESLint veio para te ajudar!Lembre-se: se você não quer configurar o ESLint, utilize a fórmula já pronta de algumas empresas de sucesso.
![Page 27: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/27.jpg)
27
Você pode adotar um padrão de projetos através de um framework confiável
![Page 28: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/28.jpg)
28
Adonis.js
![Page 29: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/29.jpg)
29
Sails.js
![Page 30: DESIGN PATTERNS...2018/12/17 · 17 Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado,](https://reader035.fdocumentos.com/reader035/viewer/2022071004/5fc1bc2219534b5840196d86/html5/thumbnails/30.jpg)
30
Boilerplate da comunidade