我想使用装饰器模式装饰我的 3 个日期,我做了实现装饰器模式所需的步骤,我在装饰器中编写了以下代码来装饰我的日期字段
def date1
model.date1.strftime("%d-%m-%y")
end
def date2
model.date2.strftime("%d-%m-%y")
end
def date3
model.date3.strftime("%d-%m-%y")
end
并查看我正在以下列方式调用
= @example.date1
= @example.date2
= @example.date3
所以上述装饰器中编写的所有方法都在做同样的任务,所以我重构了一个基本装饰器,它只包含一种格式方法,所以上面的装饰器继承自基本装饰器
喜欢
class BaseDecorator < Draper::Decorator
def format_date(model_name, attribute_name)
model_name.attributes[attriburte_name].strftime("%d-%m-%Y")
end
end
我的子装饰器看起来像这样
class ExampleDecorator < BaseDecorator
def date1
format_date(model, "date1")
end
def date2
format_date(model, "date2")
end
def date3
format_date(model, "date3")
end
end
所以现在我的问题是在子装饰器中重复相同的代码所以我想重构我的代码,我应该如何重构我的代码?