유틸리티 클래스는 객체지향이 아닌 이유는?
Opened this issue · 1 comments
f1v3-dev commented
유틸리티 클래스를 보자면,
public class NumberUtils {
private NumberUtils() {
throw new UnsupportedOperationException("Utility class");
}
public static String formatWithCommas(int number) {
// 숫자를 천 단위로 쉼표를 찍어주는 메서드
}
}
위와 같이 static method를 통해 접근만 가능하다. 또한 생성자를 private
접근 제어자를 통해 인스턴스화를 막아두었다.
- 단순하게 공통적으로 사용되는 메서드를 한 곳에 모아 재사용성을 높인것
- 해당 유틸리티 클래스를 사용하는 클래스와 강한 결합도를 갖추게 된다.
인스턴스화를 막기 때문에 객체지향이 될 수 없는 것 같다. 오히려 절차지향에 가깝다고 할 수 있을 것 같다.
객체지향이 되기 위해서는 다른 객체와 협력 관계에서 메시지를 주고 받아야 하는데 유틸리티 클래스는 '객체'가 아님
읽어보자
f1v3-dev commented
객체가 식별 가능하다는 것은 구별할 수 있는 특정한 프로퍼티, 식별자가 객체 안에 존재한다는 것이라고 한다.
여기서 식별자는 new 키워드를 통해 만들어진 인스턴스가 가지는 Heap 영역 메모리 주소라고 봐도 무방한가?