我最近正在筛选一些代码,并遇到了类似这样的事情:
class A
@@container = {}
def self.register(a, b)
@@container[a] = b
end
def self.get(a)
@@contaienr[a]
end
end
class BRunner < A
A.register(D, self)
def self.run
#...
end
end
class CRunner < A
A.register(E, self)
def self.run
#...
end
end
class C
def self.call
[D, E].each do |item|
A.get(item).run()
end
end
end
BRunner
和CRunner
在运行时执行各自的类定义块时调用register
。然后,当类C
显式运行时,它调用D
和E
映射到的对象,并调用run
函数这在我看来似乎不对,这是不清楚的代码。这是Ruby还是不好的编程?
答案 0 :(得分:0)
您的示例虽然是Ruby代码,但似乎不是特定于Ruby的设计模式。我怀疑这是为该代码库创建的软件设计模式。
没有实际代码库的上下文,很难说它是不是太抽象还是太“坏”,但是即使在您提供的小示例中,它也可能仍有改进的空间。
您可以找到用Ruby编写的常见软件设计模式的示例,以进行比较: