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:
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.
E agora usamos Dependency Injection (injeções através do método construtor da classe) na instância do objeto.
Muito obrigado pelo conteúdo Rodrigo Manguinho. linkedin.com/in/rmanguinho