如果您熟悉Java RDF and OWL engine Jena,那么您已经遇到了他们的理念,即尽可能将所有内容都指定为接口。这意味着资源,语句, RDFNode ,属性,甚至RDF 模型等等,与您可能首先想到的相反, Interfaces 而不是具体的类。
这导致经常使用工厂。由于您无法实例化 Property 或 Model ,因此您必须为其他人执行其他操作 - the Factory design pattern。
我的问题是,考虑到图书馆旨在服务的内容的性质,使用此模式背后的原因是什么,而传统的类层次结构系统?使用任何一种都是完全可行的。例如,如果我想要一个内存支持 Model 而不是数据库支持的 Model ,我可以实例化那些类,我不需要让工厂给我之一。
顺便说一下,我正在编写一个用于操作Pearltrees数据的库,它以RDF / XML文档的形式从他们的网站导出。当我编写这个库时,我有很多选项来定义Peartrees数据中存在的关系。 Pearltrees数据的好处在于它有一个非常合乎逻辑的类系统:树由珍珠组成,可以是Page,Reference,Alias或Root珍珠。
我的问题来自于试图弄清楚我是否应该在我的图书馆采用Jena哲学,或者如果我应该忽视它,选择我自己的设计理念,坚持下去。