这不是 Ruby 特有的,但我现在正好在使用 Ruby。
这是一个提供文本打印功能的类。
class Printer
# some static methods
def self.fancy_print(text)
# do fancy formatting
end
def self.print(text)
fancy_print(text)
end
# some instance methods
def initialize(text)
@text = text
end
def print
#somehow call fancy_print(@text)
end
end
在一个类中同时提供实例方法和静态方法是不是糟糕的设计?
有时我想保留多个 Printer
实例。其他时候,我只需要说 Printer.print(text)
就可以获取该文本,而不必费心存储它以备后用,因此会产生一个静态的 print
方法和一个实例 print
方法。
最佳答案
不,这不是糟糕的设计。
这很正常——有些方法是类方法,有些是实例方法。我不确定感知到的问题可能是什么。甚至很难找到只有其中一个或另一个的类,尽管在 Java 中您经常看到静态实用程序类。
编辑 IMO 这个问题具有误导性;您实际上是在问具有相同名称的静态方法和实例方法是否是糟糕的设计。
如果两者都是公共(public)的,那就很棘手了,因为如何使用这个类不一定很明显。换句话说,它是设计为通过静态方法还是实例方法使用的?两个都?他们有什么不同?这种差异是否应该……通过名称来区分?
最终这取决于上下文和用法——没有单一的答案。
关于ruby - 什么时候可以在一个类中同时使用静态方法和实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12014272/