覆盖实例中方法的最佳方法是什么?

时间:2011-11-08 18:45:14

标签: ruby

如果我要从具有内置包装器的数据库中获取一个字段,我将以对象数组的形式接收数据,每个对象都有一系列可以调用的实例。例如:

class DataWrapper
  attr_reader :foo, :bar
end

返回数据,如[@ data1,@ data2,@ data3等],其中@data [1-3]是DataWrapper的所有实例。

那么,如果我在知道将要使用哪种上下文之前收到该数据,以及我想如何格式化它,该怎么办呢?在特定上下文中格式化数据的最佳(非Rails)方法是什么,例如

case :xml
   @data1.to_xml.foo #foo = 4
case :web_table
   @data1.to_web_table.foo #foo = "four"

1 个答案:

答案 0 :(得分:0)

“格式化”方法应该是最后的。例如

case :xml
  @data1.foo.to_xml #foo = 4
case :web_table
  @data1.foo.to_web_table #foo = "four"
....

您需要将格式化方法混合到基类或对象。

格式化方法可以检查父类的类,并决定如何转换值。