第1部第11章全ての悪の根源
6473 ワード
<現在実装が必要なリスト>ドル5+10 CHF=10ドル(為替レートが2:1の場合) $5 * 2 = $10 amount私有化 ドル副作用 金銭四捨五入 equals() hashCode() Equal null Equal object ~~ 5CHF * 2 = 10CHF~~ ドル/Franc重複除外 ドル共通equals 公共時間 FrancとDollarの比較 通話? 削除 testFrancマルチレプリケーション ドル/Franc ドルの消去
2つのサブクラスDollarとFrancはコンストラクション関数のみです.作成者のみのサブクラスを必要としないため、サブクラスを削除します.
コードの意味を変更することなく、子クラスへの参照を親クラスへの参照に変更できます.
<現在実装が必要なリスト>ドル5+10 CHF=10ドル(為替レートが2:1の場合) $5 * 2 = $10 amount私有化 ドル副作用 金銭四捨五入 equals() hashCode() Equal null Equal object ~~ 5CHF * 2 = 10CHF~~ ドル/Franc重複除外 ドル共通equals 公共時間 FrancとDollarの比較 通話? 削除 testFrancマルチレプリケーション ドル/Franc ドルの消去
私たちはここにいます.サブクラスの抽出が完了し、サブクラスが削除されました.
2つのサブクラス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");
}
}
このように変更すると、サブクラスを削除できます.<現在実装が必要なリスト>
私たちはここにいます.
Reference
この問題について(第1部第11章全ての悪の根源), 我々は、より多くの情報をここで見つけました https://velog.io/@miiunii/1부-11장-모든-악의-근원テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol