1 개요[ | ]
- Inversion of Control (IoC)
- 제어의 역전, 제어 역전, 제어 반전, 제어의 반전, 역제어[1]
- 추상화 원칙의 한가지
- 제어 흐름 구조가 뒤바뀌는 것
- 실행에 필요한 객체의 생성·사용 등 제어 권한을 위임하는 것
- 절차적 프로그래밍과 비교했을 때[2], 시스템 제어흐름이 역전되어 있는 소프트웨어 아키텍처 설계
- 개별 목적에 따라 쓰인 코드 부분이 일반적이고 재사용가능한 라이브러리의 흐름 제어를 받는 형식의 설계
- 예시: 서블릿(기능 정의)-컨테이너(실제 수행), 템플릿 메소드 패턴, 프레임워크
- 제어 반전 구조인지 여부를 프레임워크와 라이브러리를 구분하는 기준으로 삼기도 한다.
- 의존성 주입은 "제어 반전"을 구현하는 주된 방법이다.
2 목적[ | ]
- 한 태스크의 실행을 구현에서 분리한다.
- 모든 시스템이 설계 목적에 집중하게 한다.
- 다른 시스템이 무엇을 할지 추측하지 않아도 된다.
- 시스템을 바꿔도 다른 시스템에 부작용을 주지 않는다.
3 예시[ | ]
Java
Copy
public class ServerFacade {
public Object respondToRequest(Object pRequest) {
if (!businessLayer.validateRequest(pRequest)) {
return null;
}
DAO.getData(pRequest);
return aspect.convertData(pRequest);
}
}
Java
Copy
public class ServerFacade {
public Object respondToRequest(Object pRequest) {
return DAO.getData(pRequest);
}
}
4 같이 보기[ | ]
5 참고[ | ]
편집자 Jmnote Jmnote bot Ykhwong
로그인하시면 댓글을 쓸 수 있습니다.