パンくず
内容
適用ケース要約
スーパークラスのふるまいが、一部のサブクラスでしか使われない。
適用内容要約
フィールドをサブクラスに移す。
サンプル
プログラマークラスから派生した、エキスパートプログラマークラスとビギナープログラマークラスがあるとします。
エキスパートプログラマーは振る舞い駆動でコーディングします
ビギナープログラマーはコピペ駆動でコーディングします
サンプルコード
# encoding: Shift_JIS class Programmer def copy_paste_driven_programming() puts "CDD programming" end def behavior_driven_programming() puts "BDD programming" end end class ExpertProgrammer < Programmer end class BeginnerProgrammer < Programmer end expert_pg = ExpertProgrammer.new() beginner_pg = BeginnerProgrammer.new() expert_pg.behavior_driven_programming beginner_pg.copy_paste_driven_programming
# encoding: Shift_JIS class Programmer end class ExpertProgrammer < Programmer def behavior_driven_programming() puts "BDD programming" end end class BeginnerProgrammer < Programmer def copy_paste_driven_programming() puts "CDD programming" end end expert_pg = ExpertProgrammer.new() beginner_pg = BeginnerProgrammer.new() expert_pg.behavior_driven_programming beginner_pg.copy_paste_driven_programming
出力(リファクタリング後)
BDD programming CDD programming