3

私は現在 Scala をいじっており、クラスの設計方法に関するいくつかのベスト プラクティスを理解しようとしました。(1 週間ほど前から Scala を試しています。)

Erlang の時代から、私はメッセージ パッシングとアクター ベースのソフトウェアの大ファンです。ほとんどの Scala の例では、アクター クラスは次のように実装されています。

object Foo
object Bar
class MyActor extends Actor {
  def receive = {
    case Foo => ...
    case Bar => ...
    case _ => ...
  }
}

しかし、オブジェクト指向 (インターフェースとポリモーフィズム) のキャリアから学んだことは、この概念はあまり柔軟ではないということです。

MyActor は MyAdvancedActor に置き換えることができますが、MyActor 実装が実装する必要があるメッセージを定義するコントラクトはありません。

Scala でアクターを書くことを考えるとき、いくつかのメソッドを指定するトレイトを書く傾向があります。MyActor 実装は、 が独自のプライベート メッセージを自身に送信できるこのメソッドを実装する必要があります。このアプローチでは、指定されたインターフェイスがあり、タイプ セーフな方法で MyActor 実装を置き換えることができます。

scala のチュートリアルと例を読んでいる間に、そのようなクラス設計に出くわすことはありませんでした。それは常識ではありませんか、それとも Scala でこれを行うためのより良い方法はありますか? それとも、これらのチュートリアルは、そのようなトピックをカバーするには小さすぎますか?

4

2 に答える 2