对于将模型拆分为单独的域和映射器层的MVC应用程序,为什么要为每个映射器类提供自己的接口?
我现在看到了一些例子,其中一些来自备受尊敬的开发者,例如此博客的案例,http://site.svn.dasprids.de/trunk/application/modules/blog/models/
我怀疑它是因为开发人员希望代码可以被其他可能拥有自己后端的人重用。是这样的吗?或者我错过了什么?
请注意,在我看到的示例中,开发人员不一定要为域对象创建接口。
答案 0 :(得分:1)
因为接口是类之间的契约(我有点假设你已经知道了)。当一个类希望你传递一个具有特定接口的对象时,目标是通知你,这个类实例期望特定的方法可以在所述对象上执行。
我能想到的唯一情况是,当使用unit of work来管理持久性时,为数据映射器定义接口时,可能。但即便如此,简单地注入一个可以创建数据映射器的工厂也会更有意义。
TL; DR:有人过度了。
PS:很可能,我对这个问题完全错了,因为我对这个主题有点偏见 - 我的mappers只包含3个(+构造函数)方法:
fetch()
,store()
和remove()
..虽然名称方法名称往往会发生变化。我更喜欢从域对象中获取检索条件,如here所述。