Roadmap backend #14 - SOLID com Typescript

Roadmap backend #14 - SOLID com Typescript

Open Closed Principle, Dependency Inversion & Design Patterns

Princípios do SOLID e Design Patterns

Open Closed Principle:

Conceito de adicionar comportamento dentro de uma classe sem alterar a própria classe.

Com este conceito fica um pouco complexo de entender, porém sabendo a diferença entre classe (tipo) e instância da classe (objeto) fica mais fácil o entendimento, vamos lá.

Temos esse trecho de código abaixo: codecontroller

Mas qual o problema que enfrentamos ao fazer nossos controllers apontarem diretamente para os validadores? Digamos que por algum motivo será necessário implementar um campo de CPF e validá-lo corretamente. Na maneira que temos atualmente, teriamos que criar outra classe concreta com a logica de validação e adicionar no nosso construtor, porém, estariamos saindo fora do princípio OCP porque estariamos modificando diretamente na classe o seu comportamento.

Qual a solução para isso?

INTERFACE, DI & COMPOSITE.

Dependency Inversion:

Iremos fazer nosso controller para de apontar para os validadores que normalmente são external libraries e vamos fazer elas apontarem para ele passando por uma interface. Também iremos criar uma classe que vai ser atender o Design Pattern Composite, onde ele também irá implementar a nossa nova interface.

interface

E agora usamos Dependency Injection (injeções através do método construtor da classe) na instância do objeto.

DI

Muito obrigado pelo conteúdo Rodrigo Manguinho. linkedin.com/in/rmanguinho