SOLID 원칙

CH_Hwang·2021년 11월 19일
0

OOP

목록 보기
1/2
post-thumbnail

SOLID 원칙

  • 로버트 마틴이 2000년대 초반에 명명한 객체 지향 프록그래밍 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 두문자어기억술로 소개한 것.

S(SRP)

- 단일 책임 원칙 (Single Responsibility Principle)

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

  • 함수가 너무 많은 작업을 처리하지 않고 하나만 처리하도록 하는 것이 좋다.
  • 너무 많은 작업을 처리할 경우 재사용이 어렵고 긴밀한 결합때문에 분리가 어렵다.

O(OCP)

- 개방-페쇄 원칙 (Open/Closed Principle)

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

  • 일단 구현 된 클래스는 추가 수정을 하지 못하게 하며 더 많은 기능이 필요한 경우 상속과 같은 확장 기능을 사용하여 추가한다.
  • 하나의 변화가 다른 곳에도 연쇄적으로 변화를 일으키는 것을 방지하기 위해 만들어짐.
  • 변화하는 부분을 추상화 하는것이 핵심.

L(LSP)

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

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

  • 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.
  • 특정 메소드가 상위 타입을 인자로 사용한다고 할 때, 그 타입의 하위 타입도 문제없이 정상적으로 작동을 해야함.

I(ISP)

- 인터페이스 분리 원칙 (Interface Segregation Principle)

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

  • 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다.
  • 큰 덩어리의 인터페이스들을 구체적이고 작은 다위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 한다.

D(DIP)

- 의존관계 역전 원칙 (Dependency inversion principle)

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

  • 자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나 상위 클래스를 두어 변하기 쉬운 것의 변화에 영향받지 않게 하는 것.

0개의 댓글