パンくず
内容
適用ケース要約
2つのサブクラスが同じメソッドを持っている。
サンプル
プログラマークラスから派生した、JavaプログラマークラスとRubyプログラマークラスがあるとします。
リファクタリング前は双方のクラスにコーディングメソッドがあります。
この振る舞いは共通になるため、継承元に引き上げます。
サンプルコード
# encoding: Shift_JIS class Programmer attr_accessor:main_language end class JavaProgrammer < Programmer attr_accessor:name def initialize(name) @name=name @main_language="Java" end def coding() puts "#{main_language} coding" end end class RubyProgrammer < Programmer attr_accessor:name def initialize(name) @name=name @main_language="Ruby" end def coding() puts "#{main_language} coding" end end java_pg = JavaProgrammer.new("tanaka") ruby_pg = RubyProgrammer.new("suzuki") java_pg.coding ruby_pg.coding
# encoding: Shift_JIS class Programmer attr_accessor:main_language def coding() puts "#{main_language} coding" end end class JavaProgrammer < Programmer attr_accessor:name def initialize(name) @name=name @main_language="Java" end end class RubyProgrammer < Programmer attr_accessor:name def initialize(name) @name=name @main_language="Ruby" end end java_pg = JavaProgrammer.new("tanaka") ruby_pg = RubyProgrammer.new("suzuki") java_pg.coding ruby_pg.coding
出力(リファクタリング後)
Java coding Ruby coding