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