SOLID 원칙 5가지에 대해 설명해보려 한다 !
SRP 단일 책임 원칙
- 한 클래스는 하나의 책임만 가져야 한다.
- 중요한 기준은 변경! 변경 있을 떄, 한 부분만 변경가능하면 단일 책임 원칙 잘 지킨 것
- ex) 객체의 생성과 사용을 분리
OCP 개방-폐쇄 원칙
✅ 확장은 열려있고, 변경은 닫혀 있다.
- 뼈대로 만든 인터페이스는 변경하지 않아야 하고, 인터페이스를 확장하여 새로운 기능을 구현하고 새로운 여러 객체를 만들 수 있어야함
- 다형성을 활용하기
- 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현 (인터페이스는 변경되는 것이 아니고, 구현하는 클래스 하나를 만들면서 확장하는 것)
LSP 리스코프 치환 원칙
- 프로그램의 객체는 정해진 원칙과 규칙을 지키면서 코드를 짜야한다.
- 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 하는 것
- 단순 컴파일 성공하는 것이 안리ㅏ 원칙을 따르는 것
ISP 인터페이스 분리 원치
- 특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스 하나보다 낫다.
- 인터페이스 하나도 그 기능을 나눠서 여러 클라이언트가 관리할 수 있도록 분리하는 것이 효과적임
- 인터페이스가 명확해지고 대체 가능성이 높아진다.
DIP 의존관계 역전 원칙
✅ 클라이언트 클래스가 구현 클래스가 아닌 인터페이스를 바라보도록 해야한다.
- 프로그래머는 추상화에 의존해야지 구체화에 의존하면 안된다는 원칙을 따르는 방법 중 하나다. (인터페이스에 의존)
- 역할에 의존하게 해야하는 것과 같다. 클라이언트가 인터페이스에 의존해야 유연하게 구현체 변경할 수 있다.
-> 이 MemberService 클라이언트는 인터페이스와 구현 클래스에도 동시에 의존해서 문제가 생긴다.
💡 의존한다는 것 : 현재 구현한 클래스를 알고 있다는것