generated at
「class内部でのinstantiateによる依存」をマシにする方法いくつか
Object間の依存の観点から、class内部で別のclassをinstantiateするのは良くない
という前提がある





状況設定
Aの内部でBを使っているとする
1.ts
class A { hoge() { const b = new B(); return b.piyo(); } }



いくつかの回避策
DIして、そもそも外部でinstantiateする
2.ts
class A { constructor(b: {piyo: () => number}) { ... } }
AとBの結合は完全に切り離されている
Aは「 piyo() を持つやつを引数に取る」にのみ依存していることになる
(他のmethod内ではなく)constructor内でinstantiateする
3.ts
class A { constructor() { this.b = new B(); } }
DIが無理なとき
Aが作られると無条件でBも作られてしまう
instantiate専用のmethodを用意する
4.ts
class A { ... b() { this.b = this.b || new B(); return this.b; } }
DIが無理なとき
Bが必要になったタイミングでBを作ることができる
3.ts よりよい点
特に内部で new B() をしている箇所が複数ある場合にマシさが増す
new B() 用のgetterみたいなイメージmrsekut
Factory作るとかは #??












参考