public void DesenvolverSistema(IProgramador programador, IEnumerable <Especificacao> specs) { // Devido à violação do princípio de Liskov, se passarmos um "AnalistaVelhaco" aqui será lançada uma exception // pois ele não cumpre funcionalmente o contrato de desenvolvedor, já que lança exceção quando pedem pra ele desenvolver. specs .ToList() .ForEach(spec => programador.Code(spec, new[] { new Coffee() })); }
public void DesenvolverSistema(IProgramador programador, IEnumerable <Especificacao> specs) { // Nesse caso como o "AnalistaAntigoProgramadorDelphi" também sabe cumprir a função de desenvolvedor como era esperado, // podemos passar a spec e uma xícara de café para ele que ele dá conta de realizar o trabalho, novamente, como era esperado. specs .ToList() .ForEach(spec => programador.Code(spec, new[] { new Coffee() })); }