제어의 역전(Inversion of Control)성격이 다른 책임이나 관심사는 분리해버려야 한다.팩토리 : 객체의 생성 방법을 결정하고 그렇게 만들어진 오브젝트를 돌려주는 것public Class DaoFactory { public UserDao userDao() { // 팩토리의 메소드는 UserDao 타입의 오브젝트를 어떻게 만들고, 어떻게 준비시킬지를 결정함 ConnectionMaker connectionMaker = new DConnectionMaker(); UserDao userDao = new UserDao(connectionMaker); return userDao; } } 위와 같은 코드를 작성해주었기에 Test 클래스에서는 이제 해당 팩토리 클래스의 메소드만 호출하면 되도록 바뀌었다.pu..