오브젝트 팩토리
객체의 생성 방법을 정하고 그렇게 정해진 오브젝트를 돌려주는 클래스
오브젝트를 생성하는 역할과 오브젝트를 사용하는 역할을 분리하기 위해 사용
애플리케이션에서 어떤 오브젝트가 어떤 오브젝트를 사용하는지를 정의해놓은 설계도 같은 역할
->애플리케이션의 구조를 결정하는 오브젝트
오브젝트 팩토리의 활용 예시
public class DaoFactory {
public UserDao userDao() {
return new UserDao(connectionMaker());
}
public AccountDao accountDao() {
return new UserDao(connectionMaker());
}
public MessageDao messageDao() {
return new UserDao(connectionMaker());
}
public ConnectionMaker connectionMaker() {
return new DConnectionMaker();
}
}
오브젝트를 만드는 코드를 별도의 메소드로 뽑아내서 중복을 제거했다.
제어의 역전
프로그램의 제어 흐름 구조를 바꾸는 것
일반적으로는 모든 오브젝트가 능동적으로 자신이 사용할 클래스를 결정하고 언제 어떻게 그 오브젝트를 만들지를 스스로 제어하는 구조
그러나 제어의 역전은 오브젝트가 자신이 사용할 오브젝트를 스스로 선택 및 제어하지 않는다.
모든 제어 권한을 다른 대상에게 위임
프레임 워크도 제어의 역전 개념이 적용된 대표적인 기술
개발자가 만든 애플리케이션 코드가 프레임 워크에 의해 사용된다.
<->라이브러리: 코드가 애플리케이션의 흐름을 제어
서블릿도 제어의 역전 개념이 적용된 대표적인 기술
서블릿 컨테이너에 의해 생성/관리된다.
프레임워크 또는 컨테이너와 같이 애플리케이션 컴포넌트의 생성, 관계설정, 사용, 생명주기, 관리 등을 제어하는 존재가 필요하다.
'Spring > 토비의 스프링' 카테고리의 다른 글
[토비의스프링3.1] 2.5 학습 테스트로 배우는 스프링 (0) | 2022.02.24 |
---|---|
[토비의스프링3.1] 1.5 스프링의 IOC (0) | 2022.01.21 |
[토비의스프링3.1] 1.3 DAO의 확장 (0) | 2022.01.13 |
[토비의스프링3.1] 1.2 DAO의 분리 (0) | 2022.01.13 |
[토비의스프링3.1] 1.1 초난감 DAO (0) | 2022.01.13 |