JavaBookStudy / JavaBook

책읽기 스터디
https://javabookstudy.github.io/
Apache License 2.0
19 stars 2 forks source link

[토비의 스프링] 1.4.2_반복되는 메서드의 중복 제거 #64

Closed taxol1203 closed 3 years ago

taxol1203 commented 3 years ago

list 1_16에서 new DConnectionMaker()를 list 1_17과 같이 ConnectionMaker 구현 클래스의 인스턴스를 만드는 부분을 제거 하기 위해 ConnectionMaker 생성용 메서드를 이용하도록 수정하였습니다.

이는 성능의 개선 보다는, 유지 보수성을 좋게 하기 위해 다음과 같이 리펙토링 하였다고 이해하면 될까요?

public class DaoFactory {
    public UserDao userDao() {
        return new UserDao(connectionMaker());
    }
    public AccountDao accountDao() {
        return new AccountDao(connectionMaker());
    }
    public MessageDao messageDao() {
        return new MessageDao(connectionMaker());
    }
    public ConnectionMaker connectionMaker() {
        return new DConnectionMaker();
    }
}
jth2747 commented 3 years ago

네, 만약 connectionMaker() 가 아니라 new DConnectionMaker()로 선언되어 있다면, 책에서 나왔듯이 D사가 아니라 N사의 ConnectionMaker로 변경을 할 때 UserDao, AccountDao, MessageDao의 모든 부분을 변경해야 합니다. 따라서 성능 개선보다는 유지보수성을 위해서 따로 메소드를 빼내서 리팩토링 하였다고 보면 될 것 같습니다.