疎結合と密結合 — 依存性注入で設計を変える
コンピューターサイエンス理論 / 全 4 枚
自分で相手を作ってしまうクラス
中で new してしまうと、その相手なしでは1行も動かせなくなります。テストのときだけ差し替えたい、という要求がここで通らなくなります。
class OrderService {
constructor() {
this.mailer = new SmtpMailer();
new SmtpMailer()相手を中で決めている }
place(order) {
this.mailer.send(order.email);
}
}
class OrderService {
constructor() {
this.mailer = new SmtpMailer();
相手を中で決めている
}
place(order) {
this.mailer.send(order.email);
}
}
できること
| やりたいこと | この設計だと |
|---|---|
| テストでメール送信を止める | できない |
| 送信先を SMTP から API に替える | 本体を書き換える |
| そのまま本番で動かす | できる |
動くけれど、動かし方が1つしかない
外から渡す形にするだけで、この表がどう変わるかを最後に見ます。
1 / 4
← → キーでも送れます