3

当编写一个带有 2 个对象作为参数的函数时,比如比较函数或向量求和,哪种设计模式更好?

1)在objects类里面写函数,只获取第二个object。

2)用静态函数编写一个外部类,这将获得两个对象。

为什么和何时?

4

2 回答 2

3

在 Java 中,您可以Comparable.compareTo(o1)代表一个对象执行它并将第二个对象作为参数:

apple.compareTo(orange);

还有Comparator.compare(o1,o2)抽象:

comparator.compare(apple, orange);

它们都没有被弃用,也没有一个被认为是更好的。它们都用于不同的场景:

  • 如果水果有固定的、自然的“顺序”,把它放在Fruit课堂上
  • 如果有多种不同的方法可以通过(大小、重量、颜色、味道)来比较水果,请使用多个比较器并一次使用您需要的任何一个。

您甚至可以将它们组合起来:Fruit只要默认顺序适合您,您就可以使用默认顺序(在内部编码)。如果有一天您需要不同的订单,请选择特定的比较器。

我相信这适用于其他类似的情况和语言。

于 2012-08-28T19:16:49.863 回答
0

恕我直言,来自 .NET 背景:如果任何对象可能为空,请使用静态方法。

如果第一个(左对象)一定是非空的,并且您希望继承类能够提供它们自己的相等方法的实现,请使用实例方法。

于 2012-08-28T19:15:28.050 回答