interfaceとimplを分けてDIする基準
1つのinterfaceに対して実装を切り替えるため
interfaceに対し、現時点で想定されるimplが2つ以上あるなら有益
e.g. 同じinterfaceで複数の実装がある
e.g. テストのために実装とモックを切り替えたい
e.g. 同じinterfaeで別のライブラリ実装に切り替えうる
レイヤ構造が明確に決まっているならimplが1つでも理由になる
instanceをsingletonにしたい時
e.g. アプリケーション全体で、一意のPrisma Clientを使いたい
interfaceとimplを分けるデメリット
認知コストが増える
1つのものを2つに分割することで、管理しなければならないモノが増える