inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

highlrang
0

<역할과 기능 분리 방법>

1. 패턴 적용

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

2. 계산 분리

로직의 기능화

3. 연동 분리

클래스 분리

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

 

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

 

<의존>

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

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

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

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

 

<스프링 의존 주입>

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

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

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

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

 

<DIP 의존 역전 원칙>

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

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

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

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

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

 

 

java 강의 최범균 DIP DI interface 분리 객체지향

답변 0