< 현재 구현해야할 목록 >
두 하위 클래스 Dollar와 Franc에는 생성자만 있다. 생성자만 있는 하위 클래스는 있을 필요가 없기에 하위 클래스를 제거하자.
코드의 의미를 변경하지 않으면서도 하위 클래스에 대한 참조를 상위 클래스에 대한 참조로 변경할 수 있다.
// Money
class Money {
protected int amount;
protected String currency;
public String toString() {
return amount + " " + currency;
}
Money times(int multiplier) {
return new Money(amount * multiplier, currency);
}
String currency() {
return currency;
}
public boolean equals(Object object) {
Money money = (Money) object;
return amount == money.amount && currency().equals(money.currency());
}
Money(int amount, String currency) {
this.amount = amount;
this.currency = currency;
}
static Money dollar(int amount) {
return new Money(amount, "USD");
}
static Money franc(int amount) {
return new Money(amount, "CHF");
}
}
이렇게 바꾼다면 하위 클래스를 지울 수 있게 된다.
< 현재 구현해야할 목록 >
우리는 이곳에서