Discuz!NT源代码中 IDataProvider接口的疑问

快乐乔巴 2012-05-10 04:08:24
Discuz!NT源代码中,发现数据操作函数接口居然只定义了一个IDataProvider,所有操作函数都定义在里面至少800多个,虽然通过partial把实现具体的DataProvider类分放到不同cs文件中,但是总感觉很别扭,有悖单一职责。
我不知道为什么要这么定义,这样有什么好处吗??
为什么不分开来呢?直接按照职责多定义几个接口不也可以吗?
而且逻辑层调用的时候也方便啊,如果按照这么大一个接口去设计,调用的时候很麻烦还要从800多个方法里找...
人家这样设计估计也有道理,可是我没有看出来呢????
...全文
200 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐乔巴 2012-05-14
  • 打赏
  • 举报
回复
再顶下 看看还有没有好的想法
快乐乔巴 2012-05-11
  • 打赏
  • 举报
回复
快乐乔巴 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

是不是为了支持多种数据库.
[/Quote]
多种数据库也就只要定义接口都一致就可以了啊 我按职责分几个接口 其他数据库分别对应实现就是了
没关系吧 现在就是想问为什么要合并成一个?
IT-Style 2012-05-11
  • 打赏
  • 举报
回复
是不是为了支持多种数据库.
快乐乔巴 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

当你需要制作插件的时候,就需要一个接口规范来加载,而他的这种设计就是插件的设计思路,统一继承一个接口的话,对于插件制作非常适合。你如果需要添加一个自定义的DataProvider,只要继承它的IDataProvider就可以被调用了。
[/Quote]
意思就是说 插件中的功能是混杂的 有可能跨多个职责 所以才统一成一个超级接口 是吗?
这个插件是指二次开发?就是第三方扩展开发??
qldsrx 2012-05-10
  • 打赏
  • 举报
回复
当你需要制作插件的时候,就需要一个接口规范来加载,而他的这种设计就是插件的设计思路,统一继承一个接口的话,对于插件制作非常适合。你如果需要添加一个自定义的DataProvider,只要继承它的IDataProvider就可以被调用了。
种草德鲁伊 2012-05-10
  • 打赏
  • 举报
回复
csdn真是太傻逼了,随便打点什么字都会被删
快乐乔巴 2012-05-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

接口是可以多重继承的,你要职责分开,可以多继承几个接口,而那个接口类似Object这个超类,提供了一个超级接口而已。
[/Quote]
qldsrx兄的意思是这样吗
public interface IDataProvider : IA,IB,IC

IA,IB,IC是我按职责分的
为什么要提供这样的一个IDataProvider超级接口呢?? 有什么好处吗
最后按职责调用不会用到这个超级接口吧,要我的话直接写3个A,B,C类分别继承IA,IB,IC,调用的时候直接按职责调用,我感觉也不差啊。
种草德鲁伊 2012-05-10
  • 打赏
  • 举报
回复
不明白有什么好处,也没看出有什么坏处
qldsrx 2012-05-10
  • 打赏
  • 举报
回复
接口是可以多重继承的,你要职责分开,可以多继承几个接口,而那个接口类似Object这个超类,提供了一个超级接口而已。
快乐乔巴 2012-05-10
  • 打赏
  • 举报
回复
help

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧