所以我有一个ruby对象,我需要创建一个pdf和excel行和cvs行
到目前为止,我已经创建了一个新类,其中包含一个方法来接收对象并执行必要的操作来生成pdf,excel,csv
我一直在阅读敏捷软件开发,原理,模式和实践,它提到了扩展方法,所以我打算做但是因为这是ruby应该我只是在另一个文件中重新打开类并添加方法在那里将他们与主类分开
所以
文件ruby_model.rb
class RubyModel < ActiveRecord::Base
end
然后做
ruby_model_pdf.rb
class RubyModel
def to_pdf
end
end
ruby_model_cvs.rb
class RubyModel
def to_csv
end
end
或者我应该使用对象扩展模式吗?
干杯
答案 0 :(得分:1)
您应该将您的方法放在一个模块中,并将该模块包含在类中。这种方式更可取,因为它更容易看到方法的来源(例如,在回溯中),并且如果事实证明它们也可以在其他类中使用,则更容易重用这些方法。
例如:
module Conversions
def to_pdf
end
def to_csv
end
end
class RubyModel
include Conversions
end
将to_pdf
和to_csv
放在不同的模块中可能也是一个好主意,除非你想要混合使用另一个模块,否则你总是希望混合使用另一个模块。
这一切都假定这些方法不属于类本身,而是根据它们不属于的名称来判断。
答案 1 :(得分:0)
如果语言功能正常,请保持简单并使用它。
设计模式是文档的解决方法,适用于语言不够表达的情况。 Ruby示例是Iterator,它由块和Enumerable
制成冗余。