为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻阅古今 2018-12-07 04:57:09
csdn上发了关于这个疑问,但还没解开我的疑问,发这来看看有没有好的解答。 Discuz!NT源代码中,发现数据操作函数接口居然只定义了一个IDataProvider,所有操作函数都定义在里面至少800多个,虽然通过partial把实现具体的DataProvider类分放到不同cs文件中,但是总感觉很别扭,有悖单一职责。我不知道为什么要这么定义,这样有什么好处吗??为什么不分开来呢?直接按照职责多定义几个接口不也可以吗?而且逻辑层调用的时候也方便啊,如果按照这么大一个接口去设计,调用的时候很麻烦还要从800多个方法里找...人家这样设计估计也有道理,可是我没有看出来呢 http://topic.csdn.net/u/20120510/16/a4deb7ec-b8e7-4cf0-9885-8d41424400b0.html 以上是csdn上的帖子  可以看看  有人说对插件开发好  我不知道好在哪
查看完整描述

4 回答

?
森林海

TA贡献2011条经验 获得超2个赞

这样做的目的是,如果有人扩展开发,但是这些方法又需要用到,分开多个文件的话,别人使用难度增加。

当分开多个接口时,如果需要创建接口时,new操作会消耗更多的资源,单一接口,如果做单列的话,很容易做

查看完整回答
反对 回复 2019-01-21
?
绝地无双

TA贡献1946条经验 获得超4个赞

嗯这块是很别扭。实际上也是不对的,不过可以看着还挺清晰。

其实官方对这个问题有过解答。

官方的回答就是可以分开。

如果是插件的话,比如IPlug .继承IDataProvider

实现Plug。继承DataProvider。即可把方法分开。

看着别扭就稍微自己改下就oK了。总体来说灵活度还是挺高的。

不过感觉discuz!nt 整体结构上并不好。

查看完整回答
反对 回复 2019-01-21
?
当年话下

TA贡献1890条经验 获得超9个赞

谢谢回复  两个回答都不错  就是只能给一个最佳答案  别介意哈  豆子是平均给的

查看完整回答
反对 回复 2019-01-21
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

@快乐乔巴: 

呵呵 木事啊。。这个问题老D回答过。很早之前看过答案的。可以看下老D的博客。

查看完整回答
反对 回复 2019-01-21
  • 4 回答
  • 0 关注
  • 439 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信