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?