java接口传参还是传对象

12-12-13 liujian1979
对于java接口传参,是传对象,还是传一个个参数?比如:

boolean add(int cpid, String app_key, String app_secret, String app_name, String app_des);

boolean add(User user);

2者对于代码维护和修改会带来多大差异性?欢迎提出自己的建议!谢谢

4
banq
2012-12-13 18:10
对象也是一种参数,是一种集合参数,里面可以包含多个参数,相当于抽象和具体的关系,接口本身是一种行为抽象,当然其参数也是一种数据抽象更好,两者对应。

当然关键是看多个参数是否可归纳到一个对象里面去。

SpeedVan
2012-12-14 01:23
从传的角度,两者没啥区别。

关键是你对add的定义,可从这样的角度出发:

是“增加一个人”,或是“增加一个动物”,还是“增加一个头和一个躯干”?(注意:从句子角度说都是正确的,但面向具体领域就有所选择)

对于这种问题,可以先放开任何技术和代码,自己用话语来描述一遍就有结果,喊了这么久的面向领域,难道还不懂么,领域中各种元定义是先于技术和代码的。

liujian1979
2012-12-14 08:52
我一直是这么用的,就是在add时候都是用User对象,对于其他操作就会用单个的操作,就像你说的,放入人的一部分。只是感觉很多实践中的总结没有上升到理论的高度而以。

liujian1979
2012-12-14 08:54
如何对于mybatis 3.X的使用,那么有很多文章不建议使用注解的方式,又没有具体剖析原因,不知道是错误的言论,还是真有内情。

root
2012-12-14 08:59
感觉怎么理解都不会有太大差别,关键是不管别人怎么表述能看懂能交流能应用就好。

cintana
2012-12-18 15:37
参数越少越好,多了容易产生歧义,容易出错

abbasky
2013-01-02 19:52
DDD的鼓励在领域边界之间尽可能采用大比例的接口。

shanhestm
2013-01-24 09:52
2012-12-13 18:10 "@banq"的内容
当然关键是看多个参数是否可归纳到一个对象里面去。 ...

如果参数太多,又没法归纳到一个对象里面去,那又有什么好办法呢

banq
2013-01-24 10:00
2013-01-24 09:52 "@shanhestm"的内容
如果参数太多,又没法归纳到一个对象里面去,那又有什么好办法呢 ...

接口是一种函数,无副作用,遵循断言原则,也就是契约设计,接口可以使用断言方式进行测试,输入参数是前置条件,输出结果是后置条件。

因此,只要你的参数方便Assert之类断言测试即可,输入参数对象一般是一种规格模式Specification,类似一种查询条件,之所以称为条件,其必有内聚性,必能用一个边界包装它。

如果不能归纳为一个对象,那么这个接口设计有问题,因为不利于断言测试,或者说无法测试,因此,编写接口时,测试用例先写也是这个道理。

sinaID20811
2013-03-07 17:12
企业ERP,大多优化及需求变化无常,建议传对象。

猜你喜欢