‣
Inversion of Control
Dependency Injection
public class UserService {
private UserRepository userRepository;
public UserService() {
//UserService가 UserRepository를 직접 생성
this.userRepository = new UserRepository();
}
public void saveUser(String username) {
userRepository.save(username);
}
}
public class userRepository {
public void save(String username) {
System.out.println("사용자 저장: " + username);
}
}
public class Main {
public static void main(String[] args) {
UserService.userService = new UserService();
userService.saveUser("홍길동");
}
}
UserService
객체가 UserRepository
객체를 new
키워드를 통해 직접 생성 및 결합하고 있다. 하지만 이런 설계는 UserService
를 테스트하기 위해 UserRepository
가 먼저 설계되어야 하고, UserRepository
대신 다른 객체로 변경된다면 코드를 변경해야하는 번거로움이 있다.