Ruby中的类和模块:用于管理大量实例方法?

时间:2016-09-13 14:34:40

标签: ruby inheritance methods scope namespaces

我正在使用聊天机器人对话管理器,其中对话框是许多对话框的聚合(对话框是一组方法)。

第一种方法是让Dialog类包含方法"封装"在模块中:

# file dialog1.rb
module Dialog1
  def method1_1
    puts 'method1_1'
  end
  def method1_2
    puts 'method1_2'
  end
  def method_common
    puts 'method_common_1'
  end
  def method1_N
    # ...
  end
end

# file dialog2.rb
module Dialog2
  def method2_1
    puts 'method2_1'
  end
  def method_common
    puts 'method_common_2'
  end
  def method2_M
    # ...
  end
end

require 'file1'
require 'file2'
# ...

class Dialog   
  include Dialog1
  include Dialog2
  # ... 
end

我很困惑,我不太喜欢这个解决方案;通过这种方式,我可能有重复的方法副作用(在Ruby重复的方法中允许:();例如在method_common方法的情况下:

dialog = Dialog.new.method_common
# method_common_2

也许重新上课可能会更好。 我更喜欢将Dialog实例作为所有对话框方法的完全连接("聚合"),但我不知道如何实现它。有什么想法吗?

0 个答案:

没有答案