Devemos separar coisas que mudam por motivos diferentes.
- A single source of change
Fechado para modificação e aberto para extensão.
Crie pontos de extensão, evitando mexer no que já está funcionando e evitando fragilizar o código.
Coerência da hierarquia.
Toda violação do princípio de substituição se torna uma violação do OCP.
- Representative rule
Regra da representatividade diz que os representantes das coisas não compartilham as relações entre as coisas que elas representam. Metáfora do divórcio e advogados que reprentam ambas as partes.
Don't depend on things you don't need.
Não dependa de coisas que não precisa.
Dependa de abstrações que o protejam contra mudanças.
Componentes de alto nível não devem depender de componentes de baixo nível, eles devem depender de abstrações.
Depender na direção da abstração.