1. 의존성 주입 - 객체 간의 의존 관계를 객체 자신이 아닌 외부의 조립기가 수행한다. 2. 구현 방식 - 생성자 방식 : 객체를 생성하는 시점에 의존하는 객체를 모두 전달받을 수 있다. - Setter (프로퍼티) 방식 : 어떤 의존 객체를 설정하는지 메서드의 이름으로 알 수 있다. - 필드(인터페이스) 방식 : 의존성을 주입하는 함수를 포함한 인터페이스를 작성하고, 인터페이스를 구현하도록 함으로써 실행시에 이를 통하여 의존성을 주입 * Field 방식을 추천하지 않는 이유 - 단일 책임의 원칙 위반 : 생성자 방식을 사용하면 파라미터가 많아짐과 동시에 하나의 클래스가 많은 책임을 갖는것을 알수 있으나 필드 방식은 의존성 주입이 쉬워 알기 어렵다. - 객체가 변할 수 있다.(불변성) : 생성자 방식과..