かとじゅんの技術日誌

技術の話をするところ

ドメインモデルの関連を表現するには

(Scala前提の記事なので注意してください)

たとえばこんなモデルがあって、相互に依存しているケースを考えよう。

注意:説明を簡単にするために、varを利用しています。

従業員

class Employee(
  val id: Long,
  val name: String,
  var department: Option[Department] = None
)

部署

class department(
  val id: Long,
  val name: String,
  var employees: Seq[Employee] = Seq.empty
)

利用例

val employee = new Employee(1, "KATO")
val department = new Department(1, "Dev")

employee.department = Some(Department) // (1)
department.employees = Department.employees + employee // (2)

加藤という従業員が開発部に所属する状態を表しています。 これの何が問題かってわかりますか?

続きを読む