|
锁定老贴子 主题:讨论一个接口设计问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-04-28
kaneg 写道 我也倾向于第一种。
设计接口的目的就是给别人调用,既然如此,何不以人为本?客户只需要把他的最原始任务丢给这个方法,至于内部如何实现他一概不管,他需要的只是最后的结果,其他的都是一个黑盒。这样,以后如果觉得某个实现效率不是很高,只要找个牛人重写一下就ok了,而不会影响到客户。 而第二种,把具体的实现推到了客户面前,客户得到的太多的信息会对客户的判断产生干扰,使之无从下手,很容易产生误用。再者,如果以后需求变了,传入的字符串不是文件名,而是普通的URL,那这个接口还能用吗?要重构势必会影响到客户,这是客户很不愿看到的结果。 现在有两种方式得到内部接口(用户不需直接访问到的,我们这些库提供者可用于组合的接口): 1。你的做法是根据用户需求先定义一个接口,以其为出发点,然后在具体实现这个接口的过程中,把不能确定的或者变化的逻辑通过声明其它接口,然后让其在运行时被注入? 2。我本意不是说用户调用接口会发生变化,我的做法是: 先定义一个用户调用接口,然后分析需求,定义出很多供组合用的内部接口。而用户调用接口的实现只不过去组合这些内部接口的实现类而已,自己内部不包含任何实现逻辑,也不会影响到客户。 我的问题是:这些内部接口是以客户调用接口的实现为出发点还是通过内部的分析设计而创造出来的。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-29
业界要数IBM玩IT的历史最长了,IBM总结出什么了?---按需计算
|
|
| 返回顶楼 | |
|
最后更新时间:2007-04-28
leebai 写道 业界要数IBM玩IT的历史最长了,IBM总结出什么了?---按需计算
btw:ls的锤子看起来挺好使
真正马上要用的是才真需求,其他都是假设。 时间多经验多人的可以多想几步,设计留点富余;时间急经验少的人就别多耗时间了,先用最简洁的方式实现了再说。 如果你经常为扩展接口而忙,表明你以后需要多想几步; 如果你的富余设计总是用不上,或者要用的时候还得大改,表明你的经验还足以留设计富余,以后你就少想几步。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-04-28
后者,功能单一些.
|
|
| 返回顶楼 | |
|
最后更新时间:2007-04-28
leebai 写道 业界要数IBM玩IT的历史最长了,IBM总结出什么了?---按需计算
真正马上要用的是才真需求,其他都是假设。 时间多经验多人的可以多想几步,设计留点富余;时间急经验少的人就别多耗时间了,先用最简洁的方式实现了再说。 如果你经常为扩展接口而忙,表明你以后需要多想几步; 如果你的富余设计总是用不上,或者要用的时候还得大改,表明你的经验还足以留设计富余,以后你就少想几步。 这个跟极限编程中推荐的增量设计不谋而合 |
|
| 返回顶楼 | |
|
最后更新时间:2007-05-09
dhxlsfn 写道 设计接口的时候是应该基于调用方还是基于实现方角度?
1. 如果基于调用方,该接口的实现应该做尽量多的事情,优点是调用方容易使用,缺点是代码实现逻辑太多,灵活度差。 2. 如果基于实现方,该接口应该做尽量少的事情,优点是组和灵活度大,缺点是调用方需要做大量的组合工作。 ......... 究竟应该怎么设计呢? 不明白lz怎么得(推)出这个两个结论的?(实话实说,第一次看到看到设计接口还有这样两条原则(或依据)) 个人认为lz思考问题的出发点就值得商榷。 《The Java programming lanuage, fourth edition》 写道 4.6. When to Use Interfaces An interface defines a type with an abstract contract. An abstract class also defines a type with an abstract contract. Which should you use and when? ....... (我英语不好,不能去翻译它:-)) 在很多其它的书里面你也可以看到类似评论. 个人认为楼主举的那个例子应当写成一个Util method。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-05-11
基于领域中的业务规则
|
|
| 返回顶楼 | |
|
最后更新时间:2007-05-14
lihy70 写道 不明白lz怎么得(推)出这个两个结论的?(实话实说,第一次看到看到设计接口还有这样两条原则(或依据)) 个人认为lz思考问题的出发点就值得商榷。 看看MF的人本接口和最小接口。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-05-15
如果我用:第一种,用来隐藏实现
如果有变,为什么只能用一个类实现?不可以是多个? 顺遍BS楼上与N多用书说话的教条主义者。。。。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-05-14
阳光晒晒 写道 顺遍BS楼上与N多用书说话的教条主义者。。。。 在你没达到大师的高度之前 最好还是继承大师的思想 就像我们从小读书继承先人们的知识一样 难不成你自己创造文字 从结绳记事开始? |
|
| 返回顶楼 | |










