我正在设计一个类,并且一些方法被设计为在子类中被覆盖。以下哪种方式更好或哪些方面有利有弊?
方式1:
class Foo(foo: (Int) => Unit = _=>{})
方式2:
class Bar {
def bar(int: Int) = {}
}
我理解foo
是一个函数值,bar
是一个方法(因此foo
无法定义参数的默认值)而Bar
可能是一个特征(不同于Foo
),但还有更多吗?
答案 0 :(得分:0)
在第一种情况下,Foo的每个实例都可以传入不同的函数。在第二种情况下,每个函数都需要一个不同的子类。
哪个更好?这取决于你需要什么。如果第二个子类样式适用于您的应用程序,它可能更好,因为代码可能更容易理解。但是如果你真的需要将函数与这个类层次结构的实现分离 - 给客户端代码提供足够的灵活性 - 那么就使用第一个。
第二种风格在某些情况下也可能略快一些,但很少重要。