我正在使用 Ruby on Rails 3.2.9 和 Ruby 1.9.3。我有许多实现类似方法的模型类,如下所示:
class ClassName_1 < ActiveRecord::Base
def great_method
self.method_1
end
def method_1 ... end
end
class ClassName_2 < ActiveRecord::Base
def great_method
result_1 = self.method_1
result_2 = self.method_2
result_1 && result_2
end
def method_1 ... end
def method_2 ... end
end
...
class ClassName_N < ActiveRecord::Base
def great_method
result_1 = self.method_1
result_2 = self.method_2
...
result_N = self.method_N
result_1 && result_2 && ... && result_N
end
def method_1 ... end
def method_2 ... end
...
def method_N ... end
end
这些模型类的行为几乎相同(不一样),因为其中一些具有带有一些或多或少方法的接口。所有方法都有不同的命名(例如,method_1
可以命名bar
和method_2
可以命名foo
),所有返回true
或false
,在每个类中总是相同的,它们之间没有关系。
重构这些类的正确方法是什么?
注意:此时我正在考虑通过在每个模块中包含以下模块来重构类:
module MyModule
def great_method
result_1 = self.respond_to?(:method_1) ? self.method_1 : true
result_2 = self.respond_to?(:method_2) ? self.method_2 : true
...
result_N = self.respond_to?(:method_N) ? self.method_N : true
result_1 && result_2 && ... && result_N
end
end
但我不知道这是否是完成我正在寻找的正确方法。此外,我不确定相关的优点和缺点......