본문 바로가기
공부/공부정리

객체지향 설계의 5원칙을 간략히 알아보자.(SOLID)

by 띵커베르 2021. 8. 25.
728x90

위키백과에서 정의하는 객체 지향 설계(SOLID)

 

이 SOLID가 아니다.

 

 

클린 코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리한 것으로.

많은 개발자들이 많이 들어본!! 앞글자들을 따서 만든 SOLID로 불려지는!! 그것이다!!(그것?)

이제 한번 간략히 알아보자(츄릅)

 

5원칙을 읽기 전에 객체지향의 4대 특성을 모른다면

간략히 정리한 해당 글을 읽고 오자 객체지향 언어의 4대 특성을 간략히 알아보자.

 

---

 

  • SRP - 단일 책임 원칙 (Single responsibility principle)
    • 한 클래스는 하나의 책임만 가져야 한다.
    • 하나의 책임이라는 말이 좀 모호하긴 한데, 변경이 있을 때 파급 효과가 적다면 원칙을 잘 따른 것
  • OCP - 개방-폐쇄 원칙 (Open/closed principle)
    • 소프트웨어 요소는 확장에는 열려 있으나, 변경에는 닫혀 있어야 한다.
    • 다형성을 활용하여 역할과 구현을 분리
  • LSP - 리스 코프 치환 원칙 (Liskov substitution principle)
    • 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
    • 하위 클래스는 상위 클래스의 규약을 잘 지켜야 한다.
    • ex) 자동차 인터페이스의 엑셀은 앞으로 가라는 기능, 뒤로 가게 구현하면 LSP 위반, 느리더라도 앞으로 가야 한다.
  • ISP - 인터페이스 분리 원칙 (Interface segregation principle)
    • 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
    • 인터페이스가 명확해지고, 대체 가능성이 높아진다.
      • ex) 자동차 인터페이스(운전, 정비 등)를 -> 운전 인터페이스, 정비 인터페이스 등으로 분리
        사용자 인터페이스(사용자, 정비사 등)는 -> 운전자 인터페이스, 정비사 인터페이스로 분리
  • DIP - 의존관계 역전 원칙 (Dependency inversion principle)
    • 추상화에 의존해야지, 구체화에 의존하면 안 된다.
    • 구현 클래스에 의존하지 말고, 이너페이스에 의존하라(역할에만 의존)
    • 의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존하라는 것이다.
      • 구체적인 클래스보다 인터페이스나 추상 클래스와 관계를 맺으라는 것.

 

 

간략히 정리를 해 보았는데 OCP, DIP를 중점적으로 보면 좋을 듯하다.

 

 

728x90

댓글