객체 지향 프로그래밍 입문(최범균) 3 - 분리, 의존 주입, DIP

<역할과 기능 분리 방법>

1. 패턴 적용

전형적 분리(아키텍처, 디자인패턴)

2. 계산 분리

로직의 기능화

3. 연동 분리

클래스 분리

4. 연속적인 if-else는 추상화 고민할 것

 

적절한 역할 분리는 테스트도 용이하게 한다.
사용자와 직접적으로 관련된 기능은 내부 메서드로, 간접적으로 관련있는 기능은 별도의 클래스로 분리한다.

 

<의존>

순환 의존은 변경이 연쇄적으로 전파된다.

기능 변경의 파장이 커지면 안 좋기 때문에 의존은 적을수록 좋다.

의존대상의 기능이 많은 경우 클래스로 분리하거나 단일 기능으로 묶을 수 있는지 확인하라.

예를 들어 민원팩토리, 민원리포지토리를 민원등록으로 묶기

 

<스프링 의존 주입>

추상적 인터페이스를 의존하고, 의존 주입은 보통 생성자 방식으로 외부(스프링)에서 진행한다.

내부에서 new()로 생성하는 것과 반대이다.

1. 의존 대상이 바뀌면 그 대상을 조립하는 부분만 수정하면 됨

2. 대역 객체를 통해 테스트가 가능하다

 

<DIP 의존 역전 원칙>

고수준 모듈(기대수준), 저수준 모듈(단위적 실제 행위)

고수준 모듈을 의존해야한다.

반대로 고수준 모듈이 저수준 모듈을 의존하는 경우, 저수준 모듈이 변화할 때 고수준 모듈에 영향을 끼침

(목표를 향해 개발하는 것이 아닌, 개발에 따라 목표가 변하는 현상)

고수준 모듈을 구현한 추상타입(인터페이스)저수준 모듈이 의존하는 방식을 추구해야한다.

 

 

댓글을 작성해보세요.