SOLID 원칙 (객체 지향 설계)

Seung·2022년 12월 19일
0

SRP : 단일 책임 원칙 (Single Responsibility Principle)

  • 한 클래스는 하나의 책임만 가져야 한다.

    위에서 말하는 책임 이라는 단어는 기능 이라고 해석이 가능하다.
    예를 들면 라는 객체가 존재 한다면 아들,직장인,남자친구 등
    다양한 소속 및 위치에서 책임을 가진다.
    그러한 책임들을 하나의 객체에 각자 매칭하여 변경이 있을 떄
    파급효과가 최대한 적도록 설계 해야한다.

OCP : 개방-폐쇄 원칙 (Open/Close Principle)

  • 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야한다.

    위에 말하는 내용은 기존 코드를 변경하지 않고,
    기능을 추가 할 수 있도록 설계 해야한다.
    예를들면 DB방식이 A 방식에서 B 방식으로 변경시에
    기존 DB를 사용하는 로직에서 코드가 변경 되지 않고
    변경 할 수 있도록 진행 특정 설정파일(Config)에서 변경

LSP : 리스코프 치환 원칙 (Liskov Substitution Principle)

  • 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.

    다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다.
    인터페이스를 구현한 구현체를 믿고 사용 하려면 해당 원칙이 필요하다.
    단순히 컴파일 성공이 아닌 궁극적인 프로그램 정확성을 위한 원칙
    자주 사용하는 예시로 정사각형과 직사각형이다.
    너비와 높이 조회 및 할당 메서드를 가진 직사각형 클래스에서 파생 된
    정사각형 클래스는 너비와 높이가 같아야 합니다.
    예를 들면 넓이를 구하는 (너비 x 높이) 메서드가 있을 경우
    직사각형 객체를 정사각형 객체로 변경시 정확성이 깨집니다.

ISP : 인터페이스 분리 원칙 (Interface Sergregation Principle)

  • 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.

    인터페이스 분리 원칙은 큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 한다.
    ISP는 인터페이스가 응집력 측면에서 작게 분할하여 클래스가 필요한 작업만 실행하도록 하는 것을 목표로 합니다.
    ISP는 단일 책임 원칙(SRP)와 거의 비슷한 목표를 가지고 있습니다.
    둘의 차이점은 SRP는 클래스와 관련된 반면 ISP는 인터페이스와 관련되어 있다는 것입니다.
    클라이언트별로 세분화된 인터페이스를 만들고 클라이언트는 사용하지 않는 메서드를 구현하지 않도록 주의해야 합니다.

DIP : 의존관계 역전 원칙 (Dependency Inversion Principle)

  • 프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안된다.”
    의존성 주입은 이 원칙을 따르는 방법 중 하나다.

    DIP를 지키는 방법 중 하나로 인터페이스의 구현체의 구현 객체를
    대신 생성하고 주입을 해줘야한다.
    예를 들면 스프링컨테이너의 빈을 이용한 의존관계 설정

profile
한번 해봅시다.

0개의 댓글