gpt4 book ai didi

java - 在 Java 中放置比较器类的最佳位置是哪里

转载 作者:行者123 更新时间:2023-12-02 09:02:10 25 4
gpt4 key购买 nike

我正在尝试确定在 Java 项目中放置比较器类的最佳位置。

public class CustomerSortingComparator implements Comparator<Customer>{
@Override
public int compare(Customer customer1, Customer customer2) {
//... my implementation
}
}

在我的项目中,我有几个包:

com.test.dao
com.test.model
com.test.controller
com.test.service
com.test.util
.....

我正在考虑将其添加到 util 包中,因为我找不到好的引用资料来建议将其放在哪里。

最佳答案

这显然是基于观点的,所以我赶紧发表我的观点。 :-)

如果您的比较器仅在一个地方使用,请在使用它的地方实现它。在同一个类中或至少在同一个包中。高内聚的设计原则决定了这就是它所属的地方。特别是因为从 Java 8 开始,比较器通常可以在一行或很少行代码中定义,因此将其放在自己的类中是没有意义的。只需在类中甚至在使用它的方法内部声明它即可:

    Comparator<Customer> customerSortingComparator = Comparator.comparing(Customer::getLastName)
.thenComparing(Customer::getFirstName);

如果另一方面,预计比较器将在多个包中的多个类中使用,请在包含 Customer 类的包中声明它。再次强调,高内聚原则会告诉你,就是这个地方。

现实生活故事:在我正在从事的项目中,他们将所有比较客户的比较器(为了示例)放入与 分开的包中的一个类中Customer 类,并且也与使用这些比较器的类分开。它为我们提供了一个不存在内聚性的类,并且在包之间存在大量不必要的耦合。一个非常糟糕的设计。

链接: Cohesion (computer science)在维基百科上

关于java - 在 Java 中放置比较器类的最佳位置是哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60081669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com