ㅇ.ㅇ
[Java] Utility Class 본문
반응형
의문
자바에서 말하는 Utility Class가 무엇일까? 뭔가 디렉토리상에도 자주 보이고, 가끔 내가 사용하기도 하지만 구체적으로 어떤 역할을 하는지, 어떤 형식을 가지는지 잘 몰랐기 때문에 정리해보려고 한다.
답
(1) 유틸리티 클래스란?
- 인스턴스 메서드와 인스턴스 변수를 제공하지 않고, 매개 변수에 대해 작업을 수행하는 정적 메서드와 변수만을 제공하는 클래스
- Static 클래스, Stateless로 사용, 멀티스레드 환경에서 thread-safe
- 대부분 final로 선언되어 상속될 수 없고, 생성자는 private으로 선언되어 초기화 가능성을 막는다
(2) 유틸리티 클래스 사용 시 문제점
- 강한 결합
- 유틸클래스를 사용하는 클래스는 유틸클래스에 강한 의존성을 갖게 된다. 추상화 진행이 없으므로 유틸클래스 변화는 해당 객체에 많은 영향을 준다. 따라서 유틸클래스를 변경하면, 해당 클래스에서 매번 수정을 해야 한다. 즉 유연한 객체지향 프로그래밍 불가능하다. 그러므로 유틸리티 클래스 사용 시에는 클래스 관계가 느슨하게 결합되도록 설계해야 한다.
- 단일 책임
- 단일 책임 원칙은 클래스나 모듈은 단 하나의 책임만 가져야 한다는 것을 뜻한다. 단일책임은 즉 클래스나 모듈이 수행하는 작업이 변경되어야 할 때야 해당 클래스나 모듈만 수정하면 되어서 유지 보수성이 좋아지는데, 유틸리티 클래스는 여러 가지 작은 유틸리티 함수를 포함해서 이 원칙을 위반하기 쉽다.
- 유틸리티 클래스에 새로운 유틸리티 함수를 추가해야 하면 모든 클래스를 수정해야 할 수도 있다는 것.
- 그러므로 유틸리티 기능이 많다면 관련된 기능을 가진 작은 유틸리티 클래스를 만들거나 관련 기능 묶어서 라이브러리 만드는 게 더 좋다.
(3) 유틸리티 클래스 사용 이유
- 캡슐화
- 비슷한 기능의 메서드와 상수를 모아둔다
- 유틸리티 기능 제공
- 코드를 더욱 효율적이고 간결하게 작성 가능 - 코드의 재사용성과 유지 보수성 향상
(4) 유틸리티 클래스 네이밍 컨벤션
- 대부분 인스턴스 생성 없으므로 클래스명으로 해당 클래스가 유틸리티 클래스라는 걸 표현해야 한다.
- 일반적으로 'Util', 'Utils', 'Helper'와 같은 단어 사용.
반응형
'Today I Learned' 카테고리의 다른 글
[JUnit] 테스트 관련 어노테이션 정리 #1 (1) | 2024.10.13 |
---|---|
[Java] FilenameUtils 사용하기 (1) | 2024.10.13 |
[Git] cherry-pick (0) | 2023.03.17 |
[Java] HashSet (0) | 2023.03.10 |
[Tomcat] tomcat - work directory (0) | 2023.03.09 |