模板方法模式,在哪里定义常用的函数

时间:2016-07-10 12:27:30

标签: ruby templates design-patterns

谢谢你的时间!

我最近阅读了关于模板模式(在Ruby中),并希望在我的代码中使用此模式。

我的问题是“在哪里放置一些常用功能”。

说我有TemplateRequestBody,JSONRequestBody和XMLRequestBody如下。

class TemplateRequestBody
  def pretty_format
    raised "called abstract method: pretty_format"
  end
end

class JSONRequestBody < TemplateRequestBody
  def pretty_format
    # pretty format JSON
    add_new_line_to_tail();
  end
end

class XMLRequestBody < TemplateRequestBody
  def pretty_format
    # pretty format XML
    escape_double_quotes();
    add_new_line_to_tail();
  end
end

在此示例中,所有子类都将使用add_new_line_to_tail(); escape_double_quotes()只能由某些子类使用。

我应该在哪里实现这两个功能?在TemplateRequestBody中还是?

谢谢!

1 个答案:

答案 0 :(得分:1)

一如既往 - 取决于:)

如果一个方法将在子类之间共享,那么将它放在父类(TemplateRequestBody)中是有意义的。如果这些方法不会在子类之间共享,那么就不要把它们放在一起。

如果某些类将使用方法,也许您可​​以考虑mixin是否是存储该方法的好地方?此外,将它放在父类中也不是一个糟糕的主意。

希望有所帮助!