객체 지향 설계의 5가지 원칙 - SOILD

99·2024년 9월 13일
  • SRP(Single Responsiblity Princeple) : 단일책임 원칙
  • OCP(Open Closed Priciple) : 개방 폐쇄 원칙
  • LSP(Listov Sergregation Priciple) : 리스코프 치환 원칙
  • ISP(Interface Segregatiom Principle): 인터페이스 분리 원칙
  • DIP(Dependency Inversion Principle) : 의존 역전 원칙
  1. SRP : 단일 책임 원칙(Single Responsibility Principle)

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

    중요한 기준은 '변경'이다. 변경이 있을 때 파급효과가 적으면 단일 책임 원칙을 잘 따른 것이라 말할 수있다.
    SRP 원칙을 적용하면 다른 클래스들이 서로 영향을 미치는 연쇄작용을 줄일 수 있다. 즉, 응집도는 높이고
    결합도는 낮출 수있다. 책임을 적절하게 분배함으로써 코드의 가독성 향상, 유지보수 용이라는 이점을 가질 수.
    있다.

  2. OCP : 개방 폐쇄 원칙(Open Closed Pricple)

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

    이는 요구사항의 변경이나 추가사항이 발생하더라고, 기존 구성요소 수정이 일어나지 말아야하며 쉽게 확장이 가능 하여 재사용할 수 있어야 한다는 뜻이다. OCP를 가능케 하는 중요한 메커니즘은 추상화와 다형성이라고 설명한다.
    OCP는 객체 지향의 장점을 극대화하는 아주 중요한 원리이다.

  3. LSP : 리스코프 치환 원칙

    "서브타입은 언제나 자신의 기반 타입으로 교체할 수 있어야 한다."

    프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
    이는 다형성에서 하위 클래스는 인터페이스 규약을 . 다지켜야 한다는 것을 말하며, 다형성을 지원하기 위한
    원칙이다. 인터페이스를 구현한 구현체는 믿고 사용하려면 . 이 원칙이 필요하다.
    상속을 잘 활용하고 있다면, 이미 LSP는 잘 구현하고 있는 것이다.

  4. ISP : 인터페이스 분리 원칙

    "클라이언트는 자신이 사용하지 않는 메소드에 의존 고나계를 맺으면 안 된다."

    이는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙이다.
    다시말해, 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다는 뜻으로,
    하나의 인터페이스를 상속 받기 보다는 인터페이스를 구체적이고 작은 단위들로 분리시켜
    꼭 필요한 인터페이스만 상속하자는 의미이다.

    SRP가 클래스의 단일책임을 강조했다면 ISP는 인터터페이스의 단일 책임을 강조한다.

  5. DIP : 의존관계 역전 원칙(Dependency Inversion Priceiple)

    "추상화된 것은 구체적인 것에 의존하면 안된다. 구체적인 것이 추상화된 것에 의존해야 한다."

    구현 클래스에 의존하지 말고 , 인터페이스에 의존하라는 뜻이다.
    인터페이스를 적극적으로 활용하라는 의미이다.
    상의클래스일 수록, 인터페이스일 수록, 추상 클래스일 수록 변하지 않을 가능성이 크다.
    하위 클래스나 구체 클래스가 아닌 . 더추상적인 것에 의존하라는 것이 의존 역전 원칙이다.

profile
부족과 결핍의 전환

0개의 댓글