分层开发的时候,层间调用,是繁琐的传字段值,还是方便的传对象?

问题描述

分层开发的时候,层间调用,是传字段值,还是传对象?比如说查询订单方法1service.search_order1(Stringp1,Stringp2,Stringp3,Stringp4)service.search_order2(Stringp1,Stringp2,Stringp3)方法2servcice.serch_order1(OrderOrder1);servcice.serch_order2(OrderOrder2);第二种代码会简化很多,但是从方法参数列表里无法看出业务逻辑,还得从方法名和源代码理解。请问大家,哪种方式更适合使用

解决方案

解决方案二:
我觉得还是传对象方便些!如果参数比较少,也不会有什么变化的,也可以直接传字段!
解决方案三:
我个人从面向对象的理解应该是第二种,第二种更符合面向对象的思想。分层的思想是便于开发维护。一般一个方法传递参数的个数是有限制的(好的编码规范),我记得华为的编码要求是5个参数为上线的。再说,java的三大特性中有封装,第二种更符合封装性,你有个四个参数,感觉不乱吗???养成一个良好的编码规范很重要,java的三大特性也不是说说的。欢迎拍砖
解决方案四:
如果传一个对象,这个对象有10个属性,浏览代码的时候,怎么快速知道这个方法的功能,是按对象的2个属性还是4个对象查询。
解决方案五:
传对象,没说的
解决方案六:
如果你后期再也不会加字段的话,第一种就行的。但是,你无法保证,因为需求在变,系统也在变。那么,这时候,你天天改方法加参数很明显不合适。如果我这个方法在其它地方也引用了,其它地方也要跟着改参数。这种系统很明显有问题啊。(要对修改关闭)但是对象做参数就不会有这种问题。对象里面加个属性,哪个方法想用直接get调用就行了。而且,对于“但是从方法参数列表里无法看出业务逻辑”这个问题。写方法要遵循几个原则:1.方法名一定要简单易懂2.方法的职责最好单一化(一个方法只实现一个功能)假如遵循了这样的原则的话,上面的问题也就不是问题了。
解决方案七:

解决方案八:
to楼上。多个条件,比如10个条件的筛选,无法做到职责单一啊。search(p1,p2,p3,p4,p5,p6)searrch(p),这个search,怎么命名?难道是searchByp1p2p2p4p5p6??
解决方案九:

解决方案十:
方法1肯定不可取。方法2可以。但是要注意一点:Order最好不要用具体类,因为用具体类的话Order和Service就紧耦合了。比如,系统中存在多种类型的订单时就会比较麻烦。如果是我来做的话,我会用第二种方法,但是会把Order定义为接口。
解决方案十一:

解决方案十二:
个人认为针对数据量大的系统适合分层,数据量小的可以不分层吧
解决方案十三:
oo编程思想上来说,传对象是比较合理的。但是传值和传对象有个关键区别,传值的话是值的拷背,操作方法里的值不改变原来的值;传对象是对象引用拷背,操作方法里的对象会改变原来的对象。参数不多具相对固定的前提下,建议传值。
解决方案十四:
传对象还有一点好处,方便扩展方法,如果现在方法只用到4个属性,将来又增加了怎么办?传对象就没有这后顾之忧。
解决方案十五:
如果解决传对象,造成的无法分辨业务逻辑的问题。
解决方案:
引用12楼momoyssy的回复:

oo编程思想上来说,传对象是比较合理的。但是传值和传对象有个关键区别,传值的话是值的拷背,操作方法里的值不改变原来的值;传对象是对象引用拷背,操作方法里的对象会改变原来的对象。参数不多具相对固定的前提下,建议传值。

nice//////
解决方案:
引用3楼tuoluofo的回复:

如果传一个对象,这个对象有10个属性,浏览代码的时候,怎么快速知道这个方法的功能,是按对象的2个属性还是4个对象查询。

你方法名字是干嘛的,你所有的方法是method1,method2这样命名的??
解决方案:
举个例子,java.util.List(不考虑泛型的话)N个方法的参数都是Object,楼主又是怎么区分的呢?
解决方案:
对象,字符串的话缺点很多。1,字符串如若后期增加,维护很难。2,字符串的容易写错。而且,现在你传几个字符串和对象来说,网络压力应该没什么的。
解决方案:
只针对你这种情况,应该是这样调用serviceStringsql=order.asSql();service.searchOrder(sql);

时间: 2024-08-30 12:10:56

分层开发的时候,层间调用,是繁琐的传字段值,还是方便的传对象?的相关文章

JNI/NDK开发指南(八)——调用构造方法和父类实例方法

转载请注明出处:http://blog.csdn.net/xyang81/article/details/44002089 在第6章我们学习到了在Native层如何调用Java静态方法和实例方法,其中调用实例方法的示例代码中也提到了调用构造函数来实始化一个对象,但没有详细介绍,一带而过了.还没有阅读过的同学请移步<JNI/NDK开发指南(六)--C/C++访问Java实例方法和静态方法>阅读.这章详细来介绍下初始一个对象的两种方式,以及如何调用子类对象重写的父类实例方法. 我们先回过一下,在J

设计数据层组件并在层间传递数据

设计|数据 设计数据层组件并在层间传递数据 Angela Crocker.Andy Olsen 和 Edward JezierskiMicrosoft Corporation 2002年8月 适用于:    Microsoft .NET 应用程序 摘要:学习向 Microsoft .NET 应用程序公开数据的最佳方式,以及如何实现一个有效的策略以便在分布式应用程序的层间传递数据.(本文包含一些指向英文站点的链接.) 目录简介 将关系数据映射到业务实体 实现数据访问逻辑组件 实现业务实体 事务处理

《Ember.js实战》——2.6 Ember.js实现各层间数据同步

2.6 Ember.js实现各层间数据同步 本章前面我们看到了一个数据同步模型,其可以确保数据始终在客户端和服务器端之间保持同步(见图2-2).在这个模型中,应用程序8个步骤中就有6个需要显式跟踪并关注应用程序内部状态.反观Ember.js框架如何使用绑定.控制器以及清晰的模型层来尽可能多地自动化样板代码,孰优孰劣就很清楚了.图2-8展示了一个改进后的概念模型. Ember.js方式的步骤减少了,这是因为我们把更多的样板代码留给了Ember.js框架,而你仍完全掌控着应用的数据流.与前面模型相比

求帮助啊 急用啊-分层开发遇到的问题~~~~~

问题描述 分层开发遇到的问题----- 当弹出DataGridView默认值,说请处理DataError事件时要怎么处理??? 解决方案 请处理DataError事件这个提示是哪里看到的,应该是你代码中写的,检查你的代码.DataError事件怎么写的.

ubuntu-求助:在开发板和LINUX间用NFS挂载文件看不到?

问题描述 求助:在开发板和LINUX间用NFS挂载文件看不到? 在FL2440开发板和ubuntu12.10间搭建NFS,用mount命令挂载后,在开发板上文档管理器中查看不到挂载文件,在minicom中用ls 也看不到,但在PC LINUX终端中创建了个hello测试文件,在minicom下执行是能成功(同样ls也看不到该文件),反过来在minicom中用touch命令创建个文件,在PC LINUX上却能看到这个文件,那说明NFS是肯定是挂载成功了的吧?为何却在开发板上却看不到挂载目录中的文件

android开发,华为P7,调用系统发短信,传递2个电话号码会发生错误,其他个数不会

问题描述 android开发,华为P7,调用系统发短信,传递2个电话号码会发生错误,其他个数不会 传递两个号码,比如"12222222223;45555555556",显示出来的是"2222222223,45555555556,1",第一个电话号码被分割了. 有人遇到吗? 解决方案 http://blog.csdn.net/coolszy/article/details/7882827 解决方案二: 你把源码贴出来给我看看呀 解决方案三: Uri smsToUri

ios开发 分享到qq空间-ios开发分享到qq空间 调用了没反应不出来分享界面

问题描述 ios开发分享到qq空间 调用了没反应不出来分享界面 ios开发分享到qq空间 调用了没反应不出来分享界面,客服说不需要申请空间得那个权限!?分享到qq空间 不回调什么原因

代码-为什么DIV层不能调用JS方法

问题描述 为什么DIV层不能调用JS方法 这是我的代码 <!--外部可运行--> <li><a href="javascript:;" onclick="document.getElementById('my').pause()">试听</a></li> <audio id="my" src="./music/BlueDucks_FourFlossFiveSix.mp3&

C#开发webservice调用SAP的webservice后返回值是表类型,如何获取值?

问题描述 求助,C#调用SAP的webservice后返回值是表类型,如何获取表的行数? 解决方案 解决方案二:什么叫表类型?DataTable?SAP天堂也返回这样的东西?解决方案三:ws返回的就是xml了,里面的数据是可以获取的.至于你说的表,具体是什么?如果是datatable,好办,解析xml就是了.如果单单是某个表名,那就啥都不能获取到.解决方案四:引用2楼guwei4037的回复: ws返回的就是xml了,里面的数据是可以获取的.至于你说的表,具体是什么?如果是datatable,好