SOLID
클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리
- SRP: 단일 책임 원칙 // 한 클래스는 하나의 책임만 진다
- OCP 개방 폐쇄 원칙 //
소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야 한다.
문제점
변경에는 닫혀있어야 하는데, 구현객체를 변경하려면 클라언트 코드를 변경해야 한다
이 OCP 원칙을 지키기위해 DI, IOC 컨테이너가 필요한것
- LSP 리스코프 치환 원칙
EX)자동차 인터페이스 엑셀은 앞으로 가라는 기능 뒤로 가게되면 LSP 위배, 느리더라도 앞으로 가게
- ISP 인터페이스 분리원칙
특정 클라이언트 위한 인터페이스 여러개가 범용인터페이스 하나보단 낫다
자동차 인터페이스 ->운전 인터페이스, 정비 인터페이스로 분리
사용자 클라이언트 -> 운전자클라이언트, 정비사 클라이언트로 분리
분리하면 정비 인터페이스 자체가 변해도 운전자 클라이언트에 영향을주지않음
인터페이스가 명확해지고 대체가능성높아짐
- DIP 의존관계 역전 원칙
추상화에 의존해야지 구체화에 의존하면 안된다
서비스는 레파지토리만 바라봐야 한다
구현 클래스에 의존하지말고인터페이스에 의존
역할에 의존하게 해야 함.