2011-02-14 4 views

답변

2

object은 클래스와 동일한 유형을 갖기 때문에 동반자 클래스를 확장하는 것이 흥미 롭습니다.

object BindHelpers이 BindHelpers를 확장하지 않은 경우 BindHelpers$이됩니다.

+6

그러면 어떤 가치가 있습니까? –

+1

예. 기본 구현을 제공합니다. – Landei

+0

컴패니언이 기본 구현을위한 적절한 장소로 보이지 않습니다. 그게 일반적인 클래스 계층 구조에 대한 것입니다. – Raphael

2

여기의 패턴이 다른 것일 수 있습니다. 나는 이것에 응답하는 리프트를 모르지만, object에 문제가 있습니다. 따라서, 조롱을받을 수있는 class에있는 모든 것을 정의한 다음 객체를 확장하면 클래스를 모의하고 테스트 내에서 객체 대신 사용할 수 있습니다.

6

이 경우 BindHelpers은 특성이면서 클래스가 아닙니다. foo()BindHelpers에 정의 된 방법으로 지정하여 액세스 할 수도 있습니다.

  1. 는 동반자 객체를 통해 사용

  2. BindHelpers.foo()은 클래스의 특성 BindHelpers을 혼합하고, 따라서 그 안에 방법을 액세스 할 수 있습니다. 예컨대

:

class MyClass extends MyParentClass with BindHelpers { 
    val a = foo() 
} 

같은 기술들은 예를 들어 ShouldMatchers Scalatest 위해 사용된다.

+0

당신은 Lift Mappers에서 동일한 패턴을 쓰고있는 것을 보았습니까? 그것은 그것의 동반자 클래스이지만 특성은 아닙니다. – Sawyer

관련 문제