이런 종류의 코드는 다음과 같이 작성된 Lift 프레임 워크에서 매우 일반적입니다.
object BindHelpers extends BindHelpers {}
이것은 무엇을 의미합니까?사람들은 왜 객체를 정의하여 동반자 클래스를 확장합니까?
답변
object
은 클래스와 동일한 유형을 갖기 때문에 동반자 클래스를 확장하는 것이 흥미 롭습니다.
object BindHelpers
이 BindHelpers를 확장하지 않은 경우 BindHelpers$
이됩니다.
여기의 패턴이 다른 것일 수 있습니다. 나는 이것에 응답하는 리프트를 모르지만, object
에 문제가 있습니다. 따라서, 조롱을받을 수있는 class
에있는 모든 것을 정의한 다음 객체를 확장하면 클래스를 모의하고 테스트 내에서 객체 대신 사용할 수 있습니다.
이 경우 BindHelpers
은 특성이면서 클래스가 아닙니다. foo()
을 BindHelpers
에 정의 된 방법으로 지정하여 액세스 할 수도 있습니다.
- 는 동반자 객체를 통해 사용
BindHelpers.foo()
은 클래스의 특성BindHelpers
을 혼합하고, 따라서 그 안에 방법을 액세스 할 수 있습니다. 예컨대
:
class MyClass extends MyParentClass with BindHelpers {
val a = foo()
}
같은 기술들은 예를 들어 ShouldMatchers
Scalatest 위해 사용된다.
당신은 Lift Mappers에서 동일한 패턴을 쓰고있는 것을 보았습니까? 그것은 그것의 동반자 클래스이지만 특성은 아닙니다. – Sawyer
liftweb 그룹에서 같은 질문에 David Pollak's answer을 찾을 수 있습니다.
- 1. Prototype은 어떻게 객체를 확장합니까?
- 2. 싱글 톤 클래스를 확장합니까?
- 3. 왜 사람들은 스칼라에서 다른 객체 안에 클래스, 특성, 객체를 정의합니까?
- 4. 왜 사람들은 자신의 오프셋을 정의합니까?
- 5. 사람들은 왜 char * & buf와 같은 것을 사용합니까?
- 6. 왜 사람들은 MappedByteBuffer에 의한 mmap이 빠르다고 말합니까?
- 7. 왜 사람들은 항상 웹 사이트에 대해 단일 j를 권장합니까?
- 8. LINQ 클래스를 다른 네임 스페이스의 자체 부분 클래스로 확장합니까?
- 9. 왜 사람들은 C++을 만든 유일한 사람이 Bjarne Stroustrup이라고 생각합니까?
- 10. 왜 일부 사람들은 MVVP를 MVC보다 진화/향상으로 제시합니까?
- 11. EF4와 Code-First : DDD 사람들은 왜 그것을 좋아합니까?
- 12. 'Autoconf'란 무엇입니까? 왜 사람들은 그것을 사용합니까? 그것을 사용해야합니까?
- 13. 동반자 개체에 대해 ScalaSig를 얻으려면 어떻게해야합니까?
- 14. PSPad를 어떻게 확장합니까?
- 15. 어떻게 파이썬을 C로 확장합니까?
- 16. 타일을 어떻게 확장합니까?
- 17. ASP.NET HttpRuntime.Cache의 경계를 확장합니까?
- 18. C#은 인덱서를 확장합니까?
- 19. zsh은 정확히 glob을 확장합니까?
- 20. 라파엘은 왜 [적용] 객체를 사용합니까?
- 21. 왜 Hibernate가 프록시 객체를 반환하나요?
- 22. JavaFX - 사람들은 무엇을 생각합니까?
- 23. 정규식을 정의하여 필터 로그 파일
- 24. Log4j를 사용자 정의하여 PatternLayout을 필터링하십시오.
- 25. 언제, 왜 System.ComponentModel.Container 클래스를 사용해야합니까?
- 26. Zend Navigation Menu View Helper는 어떻게 확장합니까?
- 27. 은 어떻게 서버 메소드를 정의하여 DataSnap 2010
- 28. act-as-taggable-on을 어떻게 확장합니까
- 29. 클래스를 사용하면 새 객체를 만들 수 없습니다.
- 30. 동적으로 DOM 객체를 만들고 클래스를 제공합니다.
그러면 어떤 가치가 있습니까? –
예. 기본 구현을 제공합니다. – Landei
컴패니언이 기본 구현을위한 적절한 장소로 보이지 않습니다. 그게 일반적인 클래스 계층 구조에 대한 것입니다. – Raphael