_ DoubleDispatchable Visitorパターンみたいなダブルディスパッチは好きなのだが、 acceptメソッドみたいなのを何回も書いてると面倒だと思う時がある。 そこでこんなモジュールを書いてみた。 module DoubleDispatchable def self.append_features(klass) super(klass) klass.class_eval do @@double_dispatch_methods = {} end def klass.double_dispatch(method, prefix) @@double_dispatch_methods[method.to_s] = prefix.to_s define_method(method) do raise SubclassResponsibilityError.new end end