Upgrade to Pro — share decks privately, control downloads, hide ads and more …

言語の力でモデリングを表現する

penguin045
December 23, 2020
250

 言語の力でモデリングを表現する

#modelinglt で話した内容です。

下の資料の方が詳しいので、是非読んでください。
実践ScalaでDDD
https://speakerdeck.com/crossroad0201/scala-on-ddd

penguin045

December 23, 2020
Tweet

Transcript

  1. 継承の制限 Scala には, という機能があります。 は,そのクラスが定義されているファ イル内でしか継承ができません。 ほかにも利点はあって,パターンマッチの網羅性 検査とか、利点はたくさんあります。 使い⽅はこんな感じです。 sealed

    trait ApplyResult // 同一 内 実装 case class Accepted(person:Employee) extends ApplyResult case class Pending(person:Employee) extends ApplyResult case class Denied(person:Employee,) extends ApplyResult 型でモデリングとなかよくする 
  2. エンティティに何を実装するか問題 エンティティに何を実装するか問題 Scala の という機能を使えば、集約を またいだ先で独⾃の振る舞いを追加できます。 // case class User(id:UserId)

    //別 集約(別 ) case class Task(id:TaskId, asigneeId:UserId){ def assign(assignee: User):Task = copy(asigneeId = asignee } implicit class Asignee(user:User){ def assignTo(task:Task): Task = task.assign(user) } 型でモデリングとなかよくする 