#input [[📒ちょうぜつソフトウェア設計入門]]の7章 ## [[🗃️DI(依存性注入)]] - 正しくオブジェクトを生成するという責務を外に出すことができる。 - 使用と生成の分離 - DI可能なクラスであることと単体テストのしやすさには、正の相関がある。 ## [[🗃️DIコンテナ]] - PHPには`ServiceContainer`というライブラリがある。 - yamlでDIを管理する - 使うときに、生成済みのインスタンスを渡すことができる。 ## [[🗃️サービスロケーター]] - アンチパターン - 単体テストしにくい - [[🗃️開放閉鎖原則(OCP)]]に反してしまう。 - 依存が手続きの中に埋もれてしまう。 - 密結合の塊ができてしまう