OOP 5대 원칙 : SOLID

Youngmin Choi·2021년 8월 1일
0

OOP

목록 보기
1/5

객체지향 5대 원칙 : SOLID

  • 단일 책임 원칙 (Single responsibility principle)
  • 개방 폐쇄 원칙 (Open/Closed principle)
  • 리스코프 치환 원칙 (Liskov substitution principle)
  • 인터페이스 분리 원칙 (Interface segregation principle)
  • 의존관계 역전 원칙 (Dependency inversion principle)

1. 단일 책임 원칙 (Single respoinsibility principle (SRP))

모든 Class는 하나의 책임만 가지며, 그 책임은 완.전.히. '캡슐화'되어야 한다. 다시말해 응집도는 높고 결합도는 낮은 프로그램을 뜻한다. class의 책임이 많아지면 class 내부 함수끼리 강한 결합을 발생할 가능성이 높아진다! 이는 유지보수에 비용이 증가하게 되므로 책임을 분리시킬 필요가 있다.

2. 개방 폐쇄 원칙 (Open/Closed principle (OCP))

클래스, 모듈 함수 등의 소프트웨어 객체는 확장에 대해 열려있어야 하고, 수정에 대해서는 닫혀 있어야 한다.

3. 리스코프 치환 원칙 (Liskov substitution principle (LSP))

리스코프 치환 코드는 상속에 대한 개념이다. 부모 Class가 들어갈 자리에 자식 Class를 넣어도 잘 구동되어야 한다 라는 원칙이다. 서브 타입은 기반 타입이 약속한 규약을 지켜야 한다.

4. 인터페이스 분리 원칙 (Interface segregation principle (ISP))

Client는 자신이 사용하지 않는 메소드에 의존 관계를 맺으면 안된다 라는 원칙이다.
'하나의 일반적인 interface보다는 여러개의 구체적인 interface가 훨~~ 낫다!'
큰 덩어리의 interface들을 구체적으로 작은 단위들로 분리시킴으로써 꼭 필요한 메소드들만 이용할 수 있게 한다. 시스템의 내부 의존성 관계를 느슨하게 하여 리팩토링, 수정, 재패포를 쉽게 할 수 있도록 한다. (설계시 굉장히 중요함!!)

5. 의존관계 역전 원칙 (Dependency inversion principle (DIP))

  • 상위 모듈은 하위 모듈에 종속되어서는 안된다. 둘 다 추상화에 의존해야 한다.
  • 추상화는 세부사항에 의존하지 않는다. 세부사항은 추상화에 의해 달라져야 한다.
    의존 관계를 맺을 때, 변화하기 쉬운것(구체화된 class) 보단 변화하기 어려운것(interface, abstract)에 의존해야 한다는 원칙이다! 즉 '의존성 주입'으로 유연한 설계가 가능하도록 하는것이 좋다!
profile
Always, Continually, In all circumstance

0개의 댓글