当编写一个带有两个对象作为参数的函数时,比如比较函数或向量求和,哪种设计模式更好呢?
1)将函数编写在对象类内部,并仅获取第二个对象。
2)编写一个静态函数的外部类,该类将获取两个对象。
为什么以及何时使用这些方法?
当编写一个带有两个对象作为参数的函数时,比如比较函数或向量求和,哪种设计模式更好呢?
1)将函数编写在对象类内部,并仅获取第二个对象。
2)编写一个静态函数的外部类,该类将获取两个对象。
为什么以及何时使用这些方法?
在Java中,你有一个Comparable.compareTo(o1)
方法,它代表一个对象并以第二个对象作为参数执行:
apple.compareTo(orange);
还有一个Comparator.compare(o1,o2)
的抽象:
comparator.compare(apple, orange);
这两种方法都没有过时,也没有被认为更好。它们在不同的场景下使用:
Fruit
类中。你甚至可以将它们结合起来:只要默认顺序适合你,就采用默认排序(在Fruit
中编码)。如果某天你需要不同的顺序,则选择特定的比较器。
我相信这种方法可以扩展到其他类似的情况和语言中。
在我看来,从.NET背景出发:如果任何对象可能为空,请使用静态方法。
如果第一个(左侧对象)肯定不为空,并且您希望使继承类能够提供其自己的相等性方法实现,则使用实例方法。