Item 4 에서 자바 진영에서 제공하는 유틸성 클래스를 언급했다.
외에도 Apache Commons의 StringUtils, IOUtils, FileUtils 등의 많은 유틸리티 클래스가 존재한다.
유틸리티 클래스는 자주 사용되는 공통 기능들을 제공한다.
이러한 공통기능을 자주 사용해 왔지만 이렇게 논쟁이 되고 있는지 몰랐다.
https://stackoverflow.com/questions/3340032/are-utility-classes-evil
유틸리티 클래스가 악이라면 공통 코드를 어디에 두어야 하나?
왜? 정적으로 선언되는 유틸리티 클래스는 객체 지향 디자인 원칙에 맞지 않기 때문이다.
유틸 클래스로 인해 모듈화의 장점을 얻어오는 것 같지만 고려되는 객체 지향 관점에서의 문제점이 존재한다.
1. 강한 결합도
추상화를 진행하지 않았기에 유틸클래스의 변화에 결합도를 가지고 있는 객체는 영향을 받게 된다.
클래스의 개수가 몇개 없다면 문제가 없겠지만 많다면... 유지보수에 문제가 심각하다.
2. 단일 책임의 원칙에 위배된다.
유틸 클래스를 사용하는 클래스는 본래 책임 외의 유틸 클래스에 대한 종속성을 얻어 내는 책임을 담당하게 된다.
'Study with group > Key Words' 카테고리의 다른 글
팩터리 패턴 (Factory Pattern) (0) | 2023.01.09 |
---|---|
브리지 패턴 (Bridge Pattern) (0) | 2023.01.07 |
플라이 웨이트 패턴 (Flyweight Pattern) (0) | 2023.01.07 |
댓글