我没有真正使用装饰器模式的原因之一是每次我需要访问装饰器方法时都必须调用.decorate。
在缺少的方法上进行修饰是一种好习惯,例如:
class User < ApplicationRecord
def foo
"foo!"
end
def method_missing(m, *args, &block)
if UserDecorator.instance_methods.include? m
UserDecorator.new( self ).decorate.send(m, args)
end
end
end
class UserDecorator < WhateverDecorator
def bar
"bar!"
end
end
如果这不是一个好习惯,那么您能不能解释为什么?