저는 스칼라를 가지고 놀고 있으며 클래스를 디자인하는 방법에 대한 모범 사례를 찾아 내려고했습니다. (1 주일 정도 지나서 스칼라를 시험해 본다.)인터페이스 기반 또는 인터페이스가없는 액터 기반 클래스
내 얼랭 시간 이후로 나는 메시지 전달과 배우 기반 소프트웨어의 엄청난 팬이다.
object Foo
object Bar
class MyActor extends Actor {
def receive = {
case Foo => ...
case Bar => ...
case _ => ...
}
}
을하지만 내 객체 지향 (인터페이스와 다형성) 캐리어는이 개념은 매우 유연 아니라고 하더군요에서 배운 대부분의 스칼라 예에서 배우 클래스는 다음과 같이 구현됩니다.
MyActor는 MyAdvancedActor로 대체 될 수 있지만 MyActor 구현이 구현해야하는 메시지를 정의하는 계약이 없습니다.
저는 스칼라에서 액터를 쓰는 것에 대해 생각할 때 몇 가지 방법을 지정하는 특성을 쓰는 경향이 있습니다. MyActor 구현은 자신의 비공개 메시지를 자신에게 보낼 수있는이 메서드를 구현해야합니다. 이 접근 방식을 통해 우리는 지정된 인터페이스를 가지며 MyActor 구현을 유형 안전 방식으로 대체 할 수 있습니다.
스칼라 튜토리얼과 예제를 읽는 시간에는 그런 수업 디자인을 접하지 못했습니다. 스칼라에서 상식이 아니거나 더 나은 방법이 있습니까? 또는 이러한 자습서는 이러한 주제를 다루기 위해 작습니까?
채널이 새로운 주제이지만 내 채널이하는 일을 이해하고 있다고 생각합니다. 타입 안전은 요즘별로 중요하지 않습니까? 정적으로 입력 된 언어의 유용한 기능이라고 생각했습니다. 바이너리가 출하되기 전에 오류가 감지 될 수 있습니다. – r2p2
@ r2p2 : 유형 안전성이 중요하므로 Typed Channels 및 [Typed Actors] (http://doc.akka.io/docs/akka/2.2.0/scala/typed-actors.html)와 같은 것들이 존재합니다 , 액터를 유형에 관계없이 안전하게 사용하는 것은 어렵습니다. '될 '것 같은 것들이 있고 어떤 발신자에게나 회신 할 길을 가져야합니다. 이 주제에 관해서는 많은 토론이 있습니다. 예를 들어 [왜 akka 액터에 메시지가 입력되지 않습니까?] (http://stackoverflow.com/q/5547947/406435). – senia