펭귄집

토비의 스프링 3.1 스프링의 이해와 원리
1장 오브젝트와 의존관계
/
- 인터페이스는 어떤 일을 하겠다는 기능만 정의해놓은 것이다.
-> 따라서 인터페이스에는 어떻게 하겠다는 구현 방법은 나타나있지 않다.
(그건 인터페이스를 구현한 클래스들이 알아서 결정할 일)


connectionMaker = new DConnectionMaker();
-> DConnection 클래스의 생성자를 호출해서 오브젝트를 생성하는 코드
어떤 ConnectionMaker 구현 클래스를 사용할지를 결정하는 new DConnectionMaker()라는 코드가 있다.


사용되는 오브젝트를 서비스 / 사용하는 오브젝트를 클라이언트라고 부를 수 있다.


클래스 사이에 관계가 만들어진다는 것은 한 클래스가 인터페이스 없이 다른 클래스를 직접 사용한다는 뜻이다.
-> 따라서 클래스가 아니라 오브젝트와 오브젝트 사이의 관계를 설정해줘야 한다.


오브젝트 사이의 관계는 런타임 시에 한쪽이 다른 오브젝트의 레퍼런스를 갖고 있는 방식으로 만들어진다.
connectionMaker = new DConnectionMaker();
-> DConnectionMaker의 오브젝트의 레퍼런스를 UserDao의 connectionMaker 변수에 넣어서 사용하게 함으로써, 이 두개의 오브젝트가 '사용'이라는 관계를 맺게 해준다.


오브젝트는 얼마든지 메소드 파라미터 등을 이용해 전달할 수 있으니 외부에서 만든 걸 가져올수 도 있다.
외부에서 만든 오브젝트를 전달받으려면, 메소드 파라미터나 생성자 파라미터를 이용하면 된다.
이런경우 파라미터로 전달되는 오브젝트의 클래스는 항상 인터페이스를 구현하기만 했다면 어떤 것이든지 상관없다.