minimal Cake Pattern

導入

Scalaにおける最適なDependency Injectionの方法を考察する 〜なぜドワンゴアカウントシステムの生産性は高いのか〜 #Scala - Qiita

// インターフェース
trait UsesUserRepository {
  val userRepository: UserRepository
}
trait UserRepository {
  // 略
}

// 実装側
trait MixInUserRepository extends UsesUserRepository {
  val userRepository = UserRepositoryImpl
}
object UserRepositoryImpl extends UserRepository {
  // 略
}

// 利用側
trait UserService extends UsesUserRepository {
  // 略
}
object UserService extends UserService with MixInUserRepository

Minimal Cake Pattern のお作法 #Scala - Qiita

Rustでの実践

Rust の DI を考える –– Part 2: Rust における DI の手法の整理 - paild tech blog