SOLID
S 단일 책임의 원칙
- SRP - Sigle Responsibility Principle
- 한 클래스는 하나의 책임만 가져야 한다.
- 변경이 있을 때 파급 효과가 적을 수 있도록 설계한다
- UI / 객체의 변경
O 개방-폐쇄의 원칙
- OCP - Open/Closed Principle
- 확장에는 열려있으나 변경에는 닫혀 있어야 한다.
- 다형성을 따른다. (자동차를 모닝에서 테슬라로 바꿔도 운전자는 운전하는 데에 지장이 없다.)
- 인터페이스를 잘 설계한다. 즉 역할과 구현의 분리를 생각한다.
L 리스코프 치환 원칙
- Liskov Substitution Principle
- 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
- 동작의 정확성을 보장해야한다. (컴파일의 성공하는 것과는 다름)
I 인터페이스 분리 원칙
- Interface Segregation Principle
- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
- 인터페이스를 쪼개야한다.
- 분리하면 변경사항에 유연해지고, 명확해진다.
D 의존관계 역전 원칙
- DIP Dependency Inversion Principle
- 추상화에 의존하고, 구체화에는 의존하지 않는다.
- 클라이언트는 인터페이스만 바라본다.
- 운전자는 자동차의 역할만 알면되된다. 아반떼의 내부 엔진이라던지 차크기를 몰라도 운전을 할 수 있다.
- 잘못된 예 (클라이언트가 구현 클래스를 직접 선택)
private MemberRepository memberRepository = new JdbcMemberRepository();