关于分层结构的参数传递形式

比如一个高级查询界面提供很多查询条件(假如我们的分层是:表现层-应用层-领域层-基础设施层)

那么首先表现层会调用应用层:findByPage(参数...),应用层的findByPage也会调用基础设施层或者领域层的findByPage返回结果,这时候就涉及到参数的传递形式了,如果参数只有三个不到的话,我觉得可以直接用,如果参数多于三个以上还是直接用的话,那么这个方法得有多少个参数呀。所以这里肯定会有一个参数的封装策略。于是呼逛了下论坛,发觉基本上都用下面的三种形式:
1.Map
2.DTO
3.Bean

我个人的观点:
1.Map最好别用,因为你不知道它里面究竟是什么东西,它的好处就是可以爆炸式增长。
2.DTO的话会使各个层耦合。应用层应该只接受领域对象作为参数,而不是接受DTO
3.用Bean的话,假如有bean没有包含的查询条件时,那么怎么做,在bean加上么,显示不行。
4.我个人目前的想法是这样的:其实类似于DTO,呵呵,叫法不同而已,叫查询对象吧:criteria,但是这个对象属于哪个层呢,这个还真没弄清楚,我想它应该属于领域层的东西。

不知道jdon是怎样做的呢?或者大虾们是怎样做的?分享一下

2012年02月13日 13:11 "@chanball"的内容
叫查询对象吧:criteria,但是这个对象属于哪个层呢,这个还真没弄清楚,我想它应该属于领域层的东西 ...

属于DDD中谈及的Specification模型,规格模型。

2012年02月13日 13:16 "@banq"的内容
属于DDD中谈及的Specification模型,规格模型。 ...

这里指的是分页查询数据库,用规格需要先全部查出来吧