DI - 4rna-y/Amalib GitHub Wiki
概要
Dependency Injection(依存性の注入)システムを提供します。 各機能の責務を表すインターフェースとそれを実装するクラスを登録し、クラスのコンストラクタにはインターフェース型で依存関係を注入することで具体的な実装に依存せずに機能を利用できるようになります。
主要なコンポーネント
ServiceCollection
インターフェースと実装クラスを登録、依存関係を解決しServiceProvider
クラスを構築するビルダークラスServiceProvider
登録されたオブジェクトを取得するクラス
使用例
インターフェースを作成する
interface GreetingService
{
fun sayHello()
}
実装クラスを作成する
class GreetingServiceImpl(private val logger: Logger) : GreetingService
{
override fun sayHello()
{
logger.info("Hello!")
}
}
登録し構築する
fun onEnable()
{
val provider = ServiceCollection(this)
.addLogger(this.slf4logger)
.addSingleton<GreetingService, GreetingServiceImpl>
}