我个人从面向对象的理解应该是第二种,第二种更符合面向对象的思想。分层的思想是便于开发维护。一般一个方法传递参数的个数是有限制的(好的编码规范),我记得华为的编码要求是5个参数为上线的。再说,java的三大特性中有封装,第二种更符合封装性,你有个四个参数,感觉不乱吗???养成一个良好的编码规范很重要,java的三大特性也不是说说的。欢迎拍砖

解决方案 »

  1.   

    如果你后期再也不会加字段的话,第一种就行的。
    但是,你无法保证,因为需求在变,系统也在变。那么,这时候,你天天改方法加参数很明显不合适。
    如果我这个方法在其它地方也引用了,其它地方也要跟着改参数。
    这种系统很明显有问题啊。
    (要对修改关闭)但是对象做参数就不会有这种问题。对象里面加个属性,哪个方法想用直接get调用就行了。而且,对于“但是从方法参数列表里无法看出业务逻辑”这个问题。
    写方法要遵循几个原则:
    1.方法名一定要简单易懂
    2.方法的职责最好单一化(一个方法只实现一个功能)
    假如遵循了这样的原则的话,上面的问题也就不是问题了。
      

  2.   

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

  3.   

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

  4.   

    你方法名字是干嘛的,你所有的方法是method1, method2这样命名的??
      

  5.   

    举个例子,java.util.List(不考虑泛型的话)N个方法的参数都是Object,楼主又是怎么区分的呢?
      

  6.   

    只针对你这种情况,应该是这样调用service
    String sql = order.asSql(); 
    service.searchOrder(sql );