【发布时间】:2010-11-02 04:41:53
【问题描述】:
当我阅读更多关于 Ruby 元编程的内容时,大多数时候我们发现至少有两种解决方案可以解决一个问题。请看下面两个例子:
class Base
def self.has_many(*args)
# ...
end
end
class Student < Base
has_many :books
end
另一种风格:
module Base
def self.included(klass)
klass.extend ClassMethods
end
module ClassMethods
def has_many(*args)
# ...
end
end
end
class Student
include Base
has_many :books
end
但是当我们设计 api 时,我们必须决定使用哪一个,但我想问问你的想法和大多数人已经在他们的库中实现的一些最佳实践。
【问题讨论】:
标签: ruby api design-patterns inheritance composition