SOLID란?
- 로버트 마틴(클린코드 저자)이 2000년대 초반에 명명한 객체지향프로그래밍 설계의 5가지 원칙을 말함.(feat. 위키백과)
- 프로그래머가 시간이 지나도 확장과 유지보수가 쉬운 코드를 짜기 위해서 이 원칙을 적용할 수 있다.
- 즉 좋은 객체 지향 프로그래밍을 위한 5가지 원칙
좋은 객체 지향 프로그래밍이란?
-
컴포넌트를 유연하고 변경이 용이 하도록 하게 하는 것.
-
이를 위해서는 다형성을 잘 지켜서 만들어야됨.
-
다형성
- 역할과 구현으로 세상을 구분함.
- 역할과 구현을 분리해두면, 구현체가 바뀌더라도 클라이언트에게는 전혀 영향을 주지 않아서 유연하고 변경용이해짐.
- 클라이언트가 내부 구조를 몰라도 되고, 내부구조가 바뀌더라도 신경쓸 필요가 없음
- 예시그림1
- 예시그림2
public class MemberService{
private MemberRepository memberRepository = new MemberRepositoryImpl();
}
public class MemberService{
private MemberRepository memberRepository = new MemberMybatisRepository();
}
SOLID의 다섯가지 원칙
1. SRP(Single responsibility principle) - 단일 책임 원칙
- 한 클래스는 하나의 책임만 가져야 함.
- 하나의 책임은 상황이나 문맥에 따라 달라서 모호하지만 핵심은 변경임
- 변경이 있을때 파급효과가 적으면 이 원칙을 잘 따르고 있다고 할 수 있음.
ex) UI 변경, 스프링의 model1
<aside>
💡 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다. - 로버트 C.마틴
</aside>
2. OCP(Open/Close principle) - 개방 폐쇄 원칙
- S/W요소는 확장에는 열려있으나 변경에는 닫혀있어야 한다.
- 다형성을 이용하면 확장(구현클래스 추가)에는 열려있으나 변경(기존의 코드를 수정)에는 닫혀있게 만들 수 있다.