design patterns...2018/12/17  · 17 observer é um padrão de projeto de software que define uma...

31
I 1 DESIGN PATTERNS Como evitar problemas no futuro

Upload: others

Post on 18-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

30

Boilerplate da comunidade

Page 31: 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,

[email protected]

LinkedIn /zalbamonteiroGitHub /zalbamonteiro

Zalba Monteiro

I

31

Obrigada!