Java 放置比较器的最佳位置

Java 放置比较器的最佳位置,java,comparator,Java,Comparator,很抱歉,如果我问的问题已经得到了回答,但我找不到推荐人。我的问题是哪里是放置比较器的最佳位置它属于哪一层。例如,我需要一个按用户出生日期、姓氏和名字排序的用户对象列表 如果您使用的是数据库,那么最好的方法是在查询本身中对其进行排序,使用排序依据一般的答案是:将其放在最需要的地方:-) 这在很大程度上取决于您的实际设计和架构。一般来说,您可以将比较器放在用户对象旁边,或者放在使用它最多(或唯一)的层中。如果比较器是对象固有的(例如,它是唯一有意义的排序方式),那么我只需在对象上实现Comparab

很抱歉,如果我问的问题已经得到了回答,但我找不到推荐人。我的问题是哪里是放置比较器的最佳位置它属于哪一层。例如,我需要一个按用户出生日期、姓氏和名字排序的用户对象列表

如果您使用的是数据库,那么最好的方法是在查询本身中对其进行排序,使用
排序依据
一般的答案是:将其放在最需要的地方:-)


这在很大程度上取决于您的实际设计和架构。一般来说,您可以将比较器放在用户对象旁边,或者放在使用它最多(或唯一)的层中。

如果比较器是对象固有的(例如,它是唯一有意义的排序方式),那么我只需在对象上实现
Comparable


如果比较器是众多实例中的一个(例如,
比较器
实例),并且仅在特定上下文中有意义,那么我会将比较器类放在该层中。

是的,如果您使用数据库或某些外部服务,并且可以在那里排序,这是最好的方法。但是,如果需要对应用程序中的对象进行排序,这取决于您的体系结构。有两种变体。如果只需要排序一次-创建匿名类,则不会在此对象上存储引用。如果您需要进行多次排序,您可以将其存储为类的静态字段或非静态字段。

在您的情况下,如果在获取期间将其放在域类上并在dao中进行排序,则意味着在dao上有两个方法(或更多方法,基于COMAPRION类型),以仅获取未排序对象的列表,例如getUsers()以及一种用于排序列表的方法,例如GetSorterDuers();当然,你只能有一个排序方法,但是如果不需要排序,那么总是调用排序是一件很麻烦的事。

问题被标记为
java
,而不是
database
。谢谢,但这不是我要问的。如果一个对象可以在很多方面进行比较,那么仅仅实现可比较的接口可能不是最好的主意。通过这样做,您可以将比较对象的方式限制为1。上个人课。您可能希望按出生日期或身高对Person对象进行排序,对吗?