Na aula de Solid com C#, Aula 1, Vídeo 3, a calculadora tem uma lógica para identificar a regra de cálculo de acordo com o cargo. Cada cargo tem uma regra de cálculo fixa.
Como isso não é responsabilidade da calculadora, o instrutor cria um construtor no cargo para receber a regra de cálculo. Pela coesão a calculadora não deve ser alterada caso crie uma regra de cálculo nova ou cargo novo venha a ser criado, até ai tudo bem. Porém a solução do instrutor não deixou apenas a calculadora mais coesa, ele excluiu uma regra de negócio da aplicação. Agora a calculadora não é mais responsável por saber qual regra para cada cálculo, o responsável é o desenvolvedor que na hora de criar o cargo passa a regra.
Por exemplo, o dev pode instanciar um Dba com regra de cálculo DezOuVinteProcento, coisa que não poderia ser feita antes da alteração, pois a regra de negócio não permitia.
A alteração correta não seria por exemplo, na classe abstrata Cargo obrigar que cada filho tenha uma regra fixa e não recebendo pelo construtor?
Obrigado, Vinicius