Single responsibility principle단일 책임 원칙한 클래스는 하나의 책임만 Open/closed principle 개방-폐쇄 원칙소프트웨어의 확장에는 개방적, 변경에는 폐쇄적 Liskov substitution principle 리스코프 치환 원칙객체는 프로그램의 정확성을 깨지않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 함 Interface segregation principle 인터페이스 분리 원칙인터페이스도 클래스 처럼 하나의 역할만 하는걸 여러개 만드는게 좋다 Dependency inversion principle 의존관계 역전 원칙구체화보다 추상화에 신경쓰기 / 추상화에 의존하자