이전

SOLID

단일 책임 원칙 (Single responsibility principle; SRP)

클래스는 단 한 개의 책임을 가져야 한다. 이는 “클래스를 변경하는 이유는 단 한개여야 한다.” 고도 표현이된다.
책임이란 변화에 대한 것

개방-폐쇄 원칙 (Open-closed principle; OCP)

확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.

  • 기능을 변경학서나 확장할 수 있으면서
  • 그 기능을 사용하는 코드는 수정하지 않는다.

개방 폐쇄 원칙이 깨질 때의 주요 증상

  • 다운 캐스팅을 한다.
  • 비슷한 if-else 블록이 존재한다.

개방 폐쇄 원칙은 유연함에 대한 것

리스코프 치환 원칙 (Liskov substitution principle; LSP)

상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다. 리스코프 치환 원칙이 제대로 지켜지지 않으면 다형성 기반에 개ㅍ 폐쇄 원칙 역시 지켜지지 않기 때문에, 리스코프 원칙을 지키는 것은 매우 중요하다.

리코스프 치환 원칙은 계약과 확장에 대한 것

  • 명시된 명세에서 벗어난 값을 리턴한다.
  • 명시된 명세에서 벗어난 익셉션을 발생한다.
  • 명시된 명세에서 벗어난 기능을 수행한다.

인터페이스 분리 원칙 (Interface segregation principle; ISP)

클라이언트는 자신이 사용하는 메서드에만 의존해야 한다.(인터페이스는 그 인터페이스를 사용하는 클라이언트 기준으로 분리해야 한다.)
인터페이스 분리 원칙은 클라이언트에 대한 것**

의존 역전 원칙 (Dependency inversion principlel DIP)

고수준 모듈은 저수준 모듈의 구현에 의존해서는 안 된다. 저수준 모듈이 고수준 모듈에서 정의한 추상 타입에 의존해야 한다.

  • 고수준 모듈 : 인터페이스와 같은 객체의 형태나 추상적 개념
  • 저수준 모듈 : 구현된 객체

단일 책임 원칙인터페이스 분리 원칙은 객체가 커지지 않도록 막아준다. 리코스프 치환 원칙의존 역전 원칙개방 폐쇄 원칙을 지원 한다.