これは良い方法ですか?定数によってアクセスされるオブジェクトの格納。処理のために他のクラスによってアクセスされるオブジェクトを格納する方法はたくさんあります。代わりにコレクションを指すハッシュオブジェクトを格納するための手段として定数を使用することは、最近@ * @ class_variables以外にも始めたことです。もしあれがあれば、プロ/詐欺師は何になるだろうか? OOPにはまったく新しいものではありませんが、何が悪い習慣になるかはわかります。これは良い方法ですか?定数によってアクセスされるオブジェクトの格納...
#!/usr/bin/env ruby
OUTSIDE_STATE = true
NAMES = {:objects => []}
module CheckSelf
module ClassMethods
def self.inherited(child)
::NAMES[:objects] << child
end
def select_and_make_calls
_selected = NAMES[:objects].select {|child|
child.purpose()
}.each {|child|
# _child = child.new(child)
child.new(child).call_out
}
end
end
module InstanceMethods
def call_out
puts "FIRING OFF THE CALLS #{self.class}"
end
end
def self.included(receiver)
receiver.extend ClassMethods
receiver.send :include, InstanceMethods
end
end
class Parent
def initialize(name)
@name = name
end
include CheckSelf
# The inherited class must be defined in the *
# Body of the class.
def self.inherited(child)
NAMES[:objects] << child
end
end
class ObjectOne < Parent
def self.purpose
OUTSIDE_STATE
end
end
class ObjectTwo < Parent
def self.purpose
true
end
end
Parent.select_and_make_calls
#object_idとObjectSpaceクラスを使用して、Rubyがすでに何をしているかを見てみるとよいでしょう。http://corelib.rubyonrails.org/classes/ObjectSpace.html#M001614 – joelparkerhenderson