Ruby on rails 不同的操作取决于传递的参数:选择的最佳模式
很多时候,我希望一个方法根据参数做一件事或另一件事。鉴于这一类别:Ruby on rails 不同的操作取决于传递的参数:选择的最佳模式,ruby-on-rails,ruby,design-patterns,Ruby On Rails,Ruby,Design Patterns,很多时候,我希望一个方法根据参数做一件事或另一件事。鉴于这一类别: class SendMailJob def initialize(action_to_perform, user) self.send(action_to_perform.to_s, args) end private def feedback(user) puts "We send feedback email #{user}" end def any_help(user)
class SendMailJob
def initialize(action_to_perform, user)
self.send(action_to_perform.to_s, args)
end
private
def feedback(user)
puts "We send feedback email #{user}"
end
def any_help(user)
puts "We send any_help email #{user}"
end
end
根据我想做什么,我用一个带有选项的符号来称呼它:
SendMailJob.new(:feedback, @user)
有更好的方法吗?以更面向对象的设计模式,您应该将这些方法委托给子类
class SendMailJob
def initialize(user)
do_action user
end
end
class FeedbackJob < SendMailJob
def do_action(user)
puts "We send feedback email #{user}"
end
end
类SendMailJob
def初始化(用户)
do_action用户
结束
结束
类FeedbackJob
但是有了编程的强大功能,使用“send”更为方便,除非您想分离一些逻辑我认为您的解决方案是合理的(正如lx00st的答案),但我认为我可能会使用静态方法(类方法)而不是您发布的用例
class SendMailJob
def self.feedback(user)
puts "We send feedback email #{user}"
end
def self.any_help(user)
puts "We send feedback email #{user}"
end
end
SendMailJob.feedback(@user)