No curso de Solid temos uma classe chamada ReajusteService
que reajusta o salário de um Funcionario funcionario
.
Essa classe, recebe via construtor uma lista de ValidacaoReajuste
, que é uma interface. Essa interface tem o método valida
Daí temos diferentes validações que implementam ValidacaoReajuste
e usam o valida
de formas diferentes.
E no ReajusteService
ele recebe uma abstração, ou seja, ele não recebe diretamente uma classe que calcula imposto, mas sim uma interface. Fazendo com que possamos passar uma lista de diferentes classes que implementam essa interface.
Agora vendo sobre strategy, eu achei o conceito BEM parecido, pois criamos uma interface Imposto
, usamos em diferentes classes que calculam imposto e a CalculadoraDeImpostos
tem um metodo que recebe um parametro do tipo da interface (Imposto
).
Interpretei errado ou existe alguma diferença entre ambos?