日期:2014-05-18  浏览次数:20877 次

Discuz!NT源代码中 IDataProvider接口的疑问
Discuz!NT源代码中,发现数据操作函数接口居然只定义了一个IDataProvider,所有操作函数都定义在里面至少800多个,虽然通过partial把实现具体的DataProvider类分放到不同cs文件中,但是总感觉很别扭,有悖单一职责。
我不知道为什么要这么定义,这样有什么好处吗??
为什么不分开来呢?直接按照职责多定义几个接口不也可以吗?
而且逻辑层调用的时候也方便啊,如果按照这么大一个接口去设计,调用的时候很麻烦还要从800多个方法里找...
人家这样设计估计也有道理,可是我没有看出来呢????

------解决方案--------------------
接口是可以多重继承的,你要职责分开,可以多继承几个接口,而那个接口类似Object这个超类,提供了一个超级接口而已。
------解决方案--------------------
不明白有什么好处,也没看出有什么坏处
------解决方案--------------------
当你需要制作插件的时候,就需要一个接口规范来加载,而他的这种设计就是插件的设计思路,统一继承一个接口的话,对于插件制作非常适合。你如果需要添加一个自定义的DataProvider,只要继承它的IDataProvider就可以被调用了。
------解决方案--------------------
是不是为了支持多种数据库.