私は現在 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 でこれを行うためのより良い方法はありますか? それとも、これらのチュートリアルは、そのようなトピックをカバーするには小さすぎますか?