疎結合と密結合 — 依存性注入で設計を変える

コンピューターサイエンス理論 / 全 4

自分で相手を作ってしまうクラス

中で new してしまうと、その相手なしでは1行も動かせなくなります。テストのときだけ差し替えたい、という要求がここで通らなくなります。

class OrderService {
constructor() {
this.mailer = new SmtpMailer();
new SmtpMailer()相手を中で決めている
}
place(order) {
this.mailer.send(order.email);
}
}

できること

やりたいことこの設計だと
テストでメール送信を止めるできない
送信先を SMTP から API に替える本体を書き換える
そのまま本番で動かすできる

動くけれど、動かし方が1つしかない

外から渡す形にするだけで、この表がどう変わるかを最後に見ます。

1 / 4

このスライドが付いているレッスンを開く