第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はコンストラクション関数のみです.作成者のみのサブクラスを必要としないため、サブクラスを削除します.
    コードの意味を変更することなく、子クラスへの参照を親クラスへの参照に変更できます.
    // 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");
        }
    }
    このように変更すると、サブクラスを削除できます.
    <現在実装が必要なリスト>
  • ドル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
  • ドルの消去
    私たちはここにいます.
  • サブクラスの抽出が完了し、サブクラスが削除されました.