Olá, entendi bem o conceito do OCP e DIP e concordo que a aplicação destes conceitos vão deixar a classe mais estável. Porém preciso de uma ajuda em uma dúvida: vai chegar um momento no meu código que vou ter que ter um monte de IF's e vai mudar com novos requerimentos que possam surgir. Seguindo o seu exemplo, suponha que a tabela de preço vai ser dependente do tipo de cliente. A classe CalculadoraDePreco não vai ser alterada pois depende de abstrações, mas que chama não vai precisar de um monte de IF's não? Para exemplificar em código : ITabelaPreco tabela; if (cliente.tipo == tipo.especial) tabela = new tabelaClientesEspeciais(); else if (cliente.tipo = tipo.vip) tabela = new tabelaClientesVip; else tabela = new tabelaPadrao; endif Ou tem uma outra forma de persistir o tipo de tabela do cliente e instancia-la?Obrigado, Leonardo