SOLID 원칙

Date:

SOLID 원칙

객체 지향 설계 원칙
SOLID라고 부르는 5가지 설계 원칙이 존재한다.

  1. SRP(Single Responsibility) - 단일 책임 원칙
    클래스는 단 한 개의 책임을 가져야 한다.
    클래스를 변경하는 이유는 단 한 개 여야 한다.
    이를 지키지 않으면, 한 책임의 변경에 의해 다른 책임과 관련된 코드에 영향이 갈 수 있다.

  2. OCP(Open-Closed) - 개방-폐쇄 원칙
    확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.
    기능을 변경하거나 확장할 수 있으면서, 그 기능을 사용하는 코드는 수정하지 않는다.
    이를 지키지 않으면, 다음과 같은 현상이 일어난다.
    (i) instanceof와 같은 연산자를 사용하거나 다운 캐스팅이 일어난다.
    (ii) 비슷한 if-else문이 반복된다.

  3. LSP(Liskov Substitution) - 리스코프 치환 원칙
    상위 타입의 객체를 하위 타입의 객체로 치환해도, 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.
    상속 관계가 아닌 클래스들을 상속 관계로 설정하면, 이 원칙이 위배된다.
    이 원칙이 깨지면 instanceof 연산을 사용하게 되는 현상이 일어난다.

  4. ISP(Interface Segregation) - 인터페이스 분리 원칙
    인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다.
    각 클라이언트가 필요로 하는 인터페이스들을 분리함으로써, 각 클라이언트가 사용하지 않는 인터페이스에 변경이 발생하더라도 영향을 받지 않도록 만들어야 한다.

  5. DIP(Dependency Inversion) - 의존 역전 원칙
    고수준 모듈은 저수준 모듈의 구현에 의존해서는 안된다.
    저수준 모듈이 고수준 모듈에서 정의한 추상 타입에 의존해야 한다.
    즉, 저수준 모듈이 변경돼도 고수준 모듈은 변경할 필요가 없는 것이다.
    Spring_CORE_BASIC_1 을 참고 하자

Reference

[1] 객체지향 설계 5대 원칙 - SOLID

댓글