토비의 스프링 3.1 책을 읽으며 일부분을 정리한 내용입니다.
개념 이해를 위한 내용들 중 일부분을 정리했으므로 이해를 돕기위한 예시 코드들 및 자세한 전체적인 내용은 책을 통해 확인하시길 바랍니다.
포스팅 내용이 저작권의 문제가 발생할 경우 게시물은 바로 삭제/비공개 처리됩니다.
오브젝트 팩토리
객체의 생성 방법을 정하고 그렇게 정해진 오브젝트를 돌려주는 클래스
오브젝트를 생성하는 역할과 오브젝트를 사용하는 역할을 분리하기 위해 사용
애플리케이션에서 어떤 오브젝트가 어떤 오브젝트를 사용하는지를 정의해놓은 설계도 같은 역할
->애플리케이션의 구조를 결정하는 오브젝트
오브젝트 팩토리의 활용 예시
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 |