Template Method Site Residential Site Lifeline Site get

  • Slides: 17
Download presentation

Template Method パターンの適用 Site Residential. Site Lifeline. Site get. Billable. Amount() … double base

Template Method パターンの適用 Site Residential. Site Lifeline. Site get. Billable. Amount() … double base = _units*_rate; double tax = base*Site. TAX_RATE; return base + tax; … double base = _units*_rate*0. 5; double tax = base*Site. TAX_RATE*0. 2; return base + tax; 3

Template Method パターンの適用 手順1 類似メソッド間の 差分を求める Site Residential. Site Lifeline. Site 記述の異なるコード get. Billable.

Template Method パターンの適用 手順1 類似メソッド間の 差分を求める Site Residential. Site Lifeline. Site 記述の異なるコード get. Billable. Amount() 片を見つける … double base = _units*_rate; double tax = base*Site. TAX_RATE; return base + tax; … double base = _units*_rate*0. 5; double tax = base*Site. TAX_RATE*0. 2; return base + tax; 4

Template Method パターンの適用 手順2 類似メソッド間の 差異を取り除く Site Residential. Site Lifeline. Site 抽出が容易なコード片 get. Billable.

Template Method パターンの適用 手順2 類似メソッド間の 差異を取り除く Site Residential. Site Lifeline. Site 抽出が容易なコード片 get. Billable. Amount() であることを確認する … double base = _units*_rate; double tax = base*Site. TAX_RATE; return base + tax; … double base = _units*_rate*0. 5; double tax = base*Site. TAX_RATE*0. 2; return base + tax; 5

Template Method パターンの適用 手順2 類似メソッド間の 差異を取り除く Site Residential. Site Lifeline. Site get. Billable. Amount()

Template Method パターンの適用 手順2 類似メソッド間の 差異を取り除く Site Residential. Site Lifeline. Site get. Billable. Amount() get. Bace. Amount() get. Tax. Amount() メソッドとして抽出 … … double base = get. Bace. Amount(); double tax = get. Tax. Amount(); return base + tax; 6

Template Method パターンの適用 Site 手順3 類似メソッドを 引き上げる get. Billable. Amount() get. Bace. Amount() …

Template Method パターンの適用 Site 手順3 類似メソッドを 引き上げる get. Billable. Amount() get. Bace. Amount() … double base = get. Bace. Amount(); get. Tax. Amount() 差異を取り除いた 親クラスに抽象 類似メソッドを親ク メソッドを定義 Residential. Site ラスへ引き上げる get. Bace. Amount() get. Tax. Amount() double tax = get. Tax. Amount(); return base + tax; Lifeline. Site get. Bace. Amount() get. Tax. Amount() 親クラスに 抽象メソッドと して定義する 7