高手帮我看一下这样的接口设计合不合理

yousite1 2010-04-23 10:35:34
public ResultBean doSomeThing(RequestBean bean);
由于接口参数经常会变动(或很大可能会变动),为了保持接口一设计就不再去改参数,所以我想将参数设计成bean
这样参数的变动只需要维护相应的bean对像即可,接口一设计后就可以不再进行修改,这样设计主要也是考虑在接口设计后
已经有调用者调用的情况下,对参数的扩充的设计.大家觉得这样设计合不合理?
还有ResultBean也是一样,主要是考虑返回的是对像,而对像里的属性也不定的情况.
比如既要返加一个int又要返回一个Hashtable的情况.
各位高手麻烦从设计和合理性的角度帮我分析一下这样的接口设计有没什么问题,谢谢了
...全文
157 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyb15910830861 2010-04-23
  • 打赏
  • 举报
回复
何不启用JDK1.5的新特性:泛型?

interface Test{
public abstract <ORIG, DEST> DEST doSomeThing(ORIG orig);
}
michaellufhl 2010-04-23
  • 打赏
  • 举报
回复
设计多个接口;
或者用范型
zfq642773391 2010-04-23
  • 打赏
  • 举报
回复
软件设计有个开闭原则
就是你编写的程序要对扩展打开,对修改关闭
对接口的修改是要关闭的
返回值不同,你可以在返回值外包装一个ResultBean的实现,再返回
paullbm 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 norwolfli 的回复:]
个人感觉不太合理.

你设计那个接口和这个有区别吗?
public Object doSomething(Object obj);

我倒觉得你不如设计成 几个方法重载,来解决参数和返回值变化问题!
PS:接口中的方法要有意义啊!
[/Quote]


以Object做为参数和返回值,是一种类型不安全的编码方式。
而楼主已经指定了具体的RequestBean类做为参数和返回值,在这一点上是比较合理的。
尽管在函数的命名似乎有些不妥。

顺便To楼主:如果你确定想返回多于一个的参数,那就应该选择类封装的形式。
其实说到代码的开闭原则并没有绝对的所谓“对修改关闭,对开放扩展”,这种开闭原则就相当于一个球在真空环境下滚动,属于一种理想化的情境!毕竟在一个项目中,不太可能出现每个类相互独立的,有关联就必然有耦合。因此建议楼主不必太拘泥于书面知识。其实“对修改关闭,对开放扩展”还应该加上“尽量”进行修饰。本人的意思就是说不可能绝对做到真正的开闭原则,而是尽最大努力去靠近这个原则!
yousite1 2010-04-23
  • 打赏
  • 举报
回复
嗯,顶一下.
Jajiel 2010-04-23
  • 打赏
  • 举报
回复
我决定还是比较合理的。
感觉你的设计和DBUtils中的Interface ResultSetHandler的设计思想差不多。
Mars_Ma_OK 2010-04-23
  • 打赏
  • 举报
回复
我觉得合理.为什么呢,因为面向接口编程都不用说了吧.

如果你传来一个接口,我可以让所以的javabean都实现这个接口,而这个接口我可以写空.不写方法,此时就充当一个中介..这样我就可以根据自己需要哪个javabean来实例就可以了..我在代码中是用此方法..

合理的解释是 面向接口 编程!!!
zfq642773391 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 norwolfli 的回复:]
个人感觉不太合理.

你设计那个接口和这个有区别吗?
public Object doSomething(Object obj);

我倒觉得你不如设计成 几个方法重载,来解决参数和返回值变化问题!
PS:接口中的方法要有意义啊!
[/Quote]
顶 用重载来解决
  • 打赏
  • 举报
回复
参数对象,我感觉挺合理的。如果一个方法的参数有四五个,那一般就会封装成参数对象。
南南北北 2010-04-23
  • 打赏
  • 举报
回复
个人感觉不太合理.

你设计那个接口和这个有区别吗?
public Object doSomething(Object obj);

我倒觉得你不如设计成 几个方法重载,来解决参数和返回值变化问题!
PS:接口中的方法要有意义啊!
yousite1 2010-04-23
  • 打赏
  • 举报
回复
hyb15910830861不知道是我不明白你的意思,还是你误解了我的想法.
你能不能再解释一下用泛型跟我这里的接口参数和返回值灵活修改有什么关系?

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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