SOLID
- SRP(single responsibility principle) : 단일 책임 원칙
- OCP(Open/Closed principle) : 개방-폐쇄 원칙
- LSP(Liskov substitution principle) : 리스코프 치환 원칙
- ISP(Interface segregation principle) : 인터페이스 분리 원칙
- DIP(Dependency inversion principle) : 의존관계 역전 원칙
1. SRP
- 한 클래스는 하나의 책임만 가진다
- 하지만 하나의 책임이라는 것은 모호하다
- 클 수 있고, 작을 수 있다
- 문맥과 상황에 따라 다르다
- 중요한 기준은 변경이다 ⇒ 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것
2. OCP
- 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다
- 다형성을 활용해보자
- 인터페이스를 구현한 새로운 클래스를 만들어서 새로운 기능을 구현
- 역할과 구현의 분리 개념과 같다
<aside>
💡 ?? 확장을 하려면 당연히 코드를 변경해야 되는거 아닌가 ??
→ 운전자는 자동차가 K3에서 테슬라가 된다고 해도 운전이 가능하다
→ 이와 같이 자동차를 테슬라로 변경에 있어서는 새로운 클래스를 만들어서 새로운 기능을 구현
</aside>
public class MemberService {
private MemberRepository memberRepository = new MemoryMemberRepository();
}
public class MemberService {
//private MemberRepository memberRepository = new MemoryMemberRepository();
private MemberRepository memberRepository = new JdbcMemberRepository();
}