当编写一个带有2个对象的函数作为参数时,比如比较函数或向量和,哪种设计模式更好?
1)在对象类中编写函数,只获取第二个对象。
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,并且您希望继承类以提供它们自己的相等方法实现,请使用实例方法。