タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

DIコンテナに関するnorry_gogoのブックマーク (2)

  • DIコンテナ【Dependency Injection Container】

    DIコンテナは,「DI(Dependency Injection:依存性の注入)」と呼ぶデザインパターンに基づいて作られたコンポーネント群を集中管理するためのソフトウエアです。 DIは,コンポーネント(クラス)間の依存関係をソースコードから取り除くことで,プログラムの実行時までコンポーネント同士が依存関係を持たないようにするデザインパターンです。 例えば,あるクラスAの中で別のクラスBのインスタンスを生成して利用しているとき,AはBに強く依存してしまっています。つまり,Bを別のクラスに差し替えたときなどにはAも変更しなければなりません。このような依存関係は,AとBを別の人が作っている場合などに特に困ります。 こうした依存性をクラスから取り除くのがDIパターンです。Bへの依存性をAから排除するには,まずBの機能を抽象化したインタフェースIを定義し,Iを実装したクラスとしてBを作ります。 Bの

    DIコンテナ【Dependency Injection Container】
  • 最小のDIコンテナを使って疎結合にする例 - id:anatooのブログ

    前回のエントリの続き。 この記事では前回のエントリで書いたDIコンテナを使ってクラス間を疎結合にする例を書く。 クラス間を疎結合にすると言っても、クラスの内部で他のクラスに依存しているのではDIコンテナをどう使おうと疎結合にはならない。 以下のコードがそう。Loggerクラス内部にLogWriterクラスへの依存を抱えている。 <?php // ごくごく単純なロガー class Logger { protected $writer; function __construct() { // LogWriterクラスがハードコーディングされている! $this->writer = new LogWriter; } function debug($msg) { $this->writer->write('[debug]' . date('c') . ' '. $msg . PHP_EOL); }

    最小のDIコンテナを使って疎結合にする例 - id:anatooのブログ
  • 1