首页 > 解决方案 > 缺少方法上的装饰对象:是还是不是?

问题描述

我没有真正使用装饰器模式的原因之一是每次我需要访问装饰器方法时都必须调用 .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

如果这不是一个好的做法,你能解释一下为什么吗?

标签: ruby-on-railsrubydecorator

解决方案


推荐阅读