是否可以在运行时对实例化的类使用prepend
?
例如,我需要根据传递的参数的值添加特定的类,以初始化方法。
ex(如果允许在初始化中调用前缀):
def initialize(param)
prepend TestB if param == 2
prepend TestC if param == 3
end
但是,这当然会导致错误:
NoMethodError: undefined method `prepend' for .. etc
我将如何实现?在实例化同一类时,我需要以一种干净的方式重写某些方法。
答案 0 :(得分:0)
prepend
是属于Module
的方法,因此不能在类的实例(这是您在initialize
方法内的位置)上调用。如果需要,可以使用extend
(属于Object
的方法)将不同的方法实现混入类的实例中。
我个人认为这是Control Couple的一种,宁可尝试避免使用。根据您的具体情况,工厂或适配器模式可能更合适。