什么设计模式更好?

时间:2012-08-28 19:11:17

标签: design-patterns

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

1)在对象类中编写函数,只获取第二个对象。

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

为什么以及何时?

2 个答案:

答案 0 :(得分:3)

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

apple.compareTo(orange);

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

comparator.compare(apple, orange);

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

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

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

我相信这可以扩展到其他类似的情况和语言。

答案 1 :(得分:0)

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

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