Single responsibility principle
- 책임이란 변화에 대한 것
- 책임의 단위는 변화되는 부분과 관련이 있다.
Open-closed principle
- 개방 폐쇄 원칙은 변경의 유연함에 관련된 원칙이다.
Liskov substitution principle
- 상위 타입의 객체를 하위 타입의 객체로 치환할 수 있어야 함
public void someMethod(SuperClass sc) {
sc.someMethod();
}
someMethod( new SubClass() );
- 리스코프 치환 원칙은 계약과 확장에 대한 내용이다.
- 위반사례
- 명시된 명세에서 벗어난 값을 리턴한다.
- 명시된 명세에서 벗어난 예외를 던진다.
- 명시된 명세에서 벗어난 기능을 수행한다.
- 리스코프 치환 원칙이 지켜지지않으면, 개방 폐쇄 원칙을 지킬 수 없게 된다.
Interface segregation principle
- 인터페이스 분리 원칙은 클라이언트 기준으로 분리하라는 원칙이다.
- 클라이언트가 사용하는 기능을 중심으로 인터페이스를 분리함으로써, 클라이언트로부터 발생하는 인터페이스 변경의 여파가 다른 클라이언트에 미치는 영향을 최소화한다.
Dependency inversion principle
- 고수준 모듈이 저수준 모듈의 구현에 의존하면 안된다.
- 의존 역전 원칙은 소스코드의 의존을 역전시켜서 변경의 유연함을 확보하는 것이지, 런타임의 의존을 역전시키는 것은 아니다.
- 의존 역전 원칙은 타입의 소유도 역전시킨다. 타입의 소유 역전은 각 패키지를 독립적으로 배포할 수 있게 한다.
- 의존 역전 원칙은 개방 폐쇄 원칙을 클래스 수준뿐만 아니라 패키지 수준까지 확장시켜 주는 디딤돌이 된다.