한 클래스는 단 한가지 역할을 해야한다.
동작하고 있던 코드를 변경하는 것이 아니라 새로운 코드를 덧붙임으로써 나중에 그런 변경을 할 수 있게 된다.
Open 은 확장에는 열려 있어야 한다는 의미
Closed 는 수정에 대해서 닫혀 있어야 한다는 의미
자식 타입은 부모타입으로 치환 가능해야 한다.
상속 관계를 구현할 때 자식 타입은 부모 타입으로 치환 가능해야 한다.
추상화에 의존한다.
추상화를 통해 의존 관계를 느슨하게 한다.