-
[Spring] 객체 지향 설계의 5가지 원칙 (SOLID)Spring 2021. 4. 18. 17:05
SOLID : 클린 코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정의했다
1. SRP
- Single Responsibility Principle, 단일 책임 원칙
- 하나의 클래스는 하나의 책임만 가져야 한다
- 책임의 기준은 모호하지만 대표적으로 기능의 변경시 파급 효과가 적도록 해야 한다
SRP 위반 사례, 서비스 클래스에서 저장소 객체를 생성하고 있다 2. OCP
- Open/Closed Principle, 개방-폐쇄 원칙
- 소프트웨어 요소는 확장에는 열려있고 변경에는 닫혀 있어야 한다
- 대표적으로 인터페이스를 만든 뒤 새로운 클래스에서 기능을 추가하는 것이 있다
- DI(Dependancy Injection)는 대표적인 OCP 적용 사례이다
OCP 적용 사례, 인터페이스를 수정하지 않고 새로운 메소드를 추가했다 3. LSP
- Liskov Substitution Principle, 리스코프 치환 원칙
- 하위 객체들은 상위 인터페이스에서 정한 기능들을 변경하지 않아야 한다
LSP 위반 사례, join 기능을 구현하지 않았다 4. ISP
- Interface Segregation Principle, 인터페이스 분리 원칙
- 인터페이스는 기능에 따라 여러 개로 나누는 것이 좋다
- 인터페이스가 명확해지며, 대체 가능성이 높아진다
5. DIP
- Dependency Inversion Principle, 의존관계 역전 원칙
- 프로그래머는 추상화에 의존해야지 구체화에 의존하면 안된다
DIP 위반 사례, memberRepository는 MemoryMemberRepository라는 구체 인스턴스에 의존한다 'Spring' 카테고리의 다른 글
[Spring] 스프링 컨테이너의 생성 과정 (0) 2021.05.23 [Spring] 로깅 라이브러리 - SLJ4J, Logback (0) 2021.05.20