객체 지향 프로그래밍 입문(최범균) 3 - 분리, 의존 주입, DIP
2022.05.08
<역할과 기능 분리 방법>
1. 패턴 적용
전형적 분리(아키텍처, 디자인패턴)
2. 계산 분리
로직의 기능화
3. 연동 분리
클래스 분리
4. 연속적인 if-else는 추상화 고민할 것
적절한 역할 분리는 테스트도 용이하게 한다.
사용자와 직접적으로 관련된 기능은 내부 메서드로, 간접적으로 관련있는 기능은 별도의 클래스로 분리한다.
<의존>
순환 의존은 변경이 연쇄적으로 전파된다.
기능 변경의 파장이 커지면 안 좋기 때문에 의존은 적을수록 좋다.
의존대상의 기능이 많은 경우 클래스로 분리하거나 단일 기능으로 묶을 수 있는지 확인하라.
예를 들어 민원팩토리, 민원리포지토리를 민원등록으로 묶기
<스프링 의존 주입>
추상적 인터페이스를 의존하고, 의존 주입은 보통 생성자 방식으로 외부(스프링)에서 진행한다.
내부에서 new()로 생성하는 것과 반대이다.
1. 의존 대상이 바뀌면 그 대상을 조립하는 부분만 수정하면 됨
2. 대역 객체를 통해 테스트가 가능하다
<DIP 의존 역전 원칙>
고수준 모듈(기대수준), 저수준 모듈(단위적 실제 행위)
고수준 모듈을 의존해야한다.
반대로 고수준 모듈이 저수준 모듈을 의존하는 경우, 저수준 모듈이 변화할 때 고수준 모듈에 영향을 끼침
(목표를 향해 개발하는 것이 아닌, 개발에 따라 목표가 변하는 현상)
고수준 모듈을 구현한 추상타입(인터페이스)을 저수준 모듈이 의존하는 방식을 추구해야한다.
댓글을 작성해보세요.