我正在使用聊天机器人对话管理器,其中对话框是许多对话框的聚合(对话框是一组方法)。
第一种方法是让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实例作为所有对话框方法的完全连接("聚合"),但我不知道如何实现它。有什么想法吗?