我正在编写一个用于查询Mediawiki API的框架。我有一个
我希望能够检测到使用我的框架的用户尝试使用Page对象实例化Mediawiki类别(即
我觉得这应该是可能的,因为它类似于Rails中的单表继承,但我不确定如何使其正常工作。
Page
类,代表维基上的文章,并且我也有一个Category
类,它是一个具有更多特定方法(例如能够计算类别成员数量)的Page
。我还有一个Page#category?
方法,通过查询API来确定文章的命名空间,从而确定实例化的Page
对象是否实际上代表了Mediawiki类别页面。class Page
def initialize(title)
# do initialization stuff
end
def category?
# query the API to get the namespace of the page and then...
namespace == CATEGORY_NAMESPACE
end
end
class Category < Page
# ...
end
我希望能够检测到使用我的框架的用户尝试使用Page对象实例化Mediawiki类别(即
Page.new(“Category:My Category”)
),如果是这样,则直接从Page构造函数实例化Category对象,而不是Page对象。我觉得这应该是可能的,因为它类似于Rails中的单表继承,但我不确定如何使其正常工作。
Page
中的category?
方法意味着祖先类知道子类,这在面向对象编程方面似乎不是一个好主意。另外,您能否稍微澄清一下您的最后一句话? - Mladen JablanovićCategory foo = new Page()
而不是Page bar = new Category()
。 - Brian S