
클래스는 객체의 팩토리(factory)이다.
클래스는 객체를 만들고, 추적하고, 적절한 시점에 파괴한다.
즉, 객체의 라이프사이클을 관리 한다.
종종 클래스를 객체의 템플릿으로 설명하지만, 이 설명은 완전히 잘못된 설명이다.
이런 식의 설명은 수동적이고, 멍청한 코드 덩어리로 클래스를 격하 시킨다.
클래스는 객체의 능동적인 관리자.
즉, 객체를 꺼내거나 반환할 수 있는 역할이기 때문에 저장소(storage) 또는 웨어하우스 라고 불러야 한다.
사실 객체를 살아있는 생명체로 생각한다면 클래스는 객체의 어머니 라고 할 수 있다.
이 은유가 가장 정확한 표현이다.
잘못된 방식이지만 매우 인기가 많은 방식
public class CashFormatter {
private int dollars;
public CashFormatter(int dollars) {
this.dollars = dollars;
}
public String format() {
return String.format("$ %d", this.dollars);
}
}
객체는 그의 역량(capability)으로 특징지어야 한다.
public class Cash {
private int dollars;
public Cash(int dollars) {
this.dollars = dollars;
}
public String usd() {
return String.format("$ %d", this.dollars);
}
}