netcommons
 
 
 

DI コンテナ

Maple フレームワークでは、DIコンテナを採用しています。

DIコンテナはデザインパターンのひとつです。
Dependency Injection 依存性の注入 という概念を実現します。
コンポーネントの独立性を高めて、機能変更があった場合に、影響が及ぶ範囲を最小限の留める目的を持っています。
プログラム本体 と その動作を記述する設定ファイル に2つに分離して記述します。
プログラム本体に設定ファイルによりパラメータを与えることを「注入」と呼んでいます。

注入
注入の概念: 図は Spring より

コンポーネンツのオブジェクトの生成を1回だけにしたときは、Singleton パターンを用います。
DIコンテナでも同じことができます。
Java の場合は、Singleton ではコンポーネンツの独立性が保てないケースがありますが。
DIコンテナではも問題ないようです。

Singleton
Singleton と DIコンテナ: 図は DI コンテナの本当の使いどころ より

DIコンテナを採用したフレームワークは、Jave の Spring や Seaser2 が有名です。
PHP では Maple くらいですね。

最近は、Ruby on Rails に代表される「設定より規約」という流れが主流になっています。
PHP では、Zend、CakePHP、Symfony などがそうです。

フレームワークには、約束事(規約)はがそれなりにあるので、設定と規約の両方を覚えなくてはなりません。
個人的には、プログラムと設定ファイルを両方を書くのは、思考の中断が起きる気がして、あまり好きではないです。
それならば、設定ファイルは最小限の方が好きですね。

参考
ITpro:DIコンテナ

Spring Frameworkで理解するDI

DI コンテナの本当の使いどころ

Ruby on Rails: DIコンテナとの比較

WikiPedia: 設定より規約
 
yn150
 

メニュー

ネットコモンズのサポート会議室ネットコモンズの有償サービスこのサイトの使用方法ネットコモンズの運用事例ネットコモンズの構築事例配布モジュール一覧グーグル地図モジュールのデモグーグルカレンダーモジュールのデモグーグル検索モジュールのデモOpenID モジュールのデモTwitterモジュールのデモFacebookモジュールのデモFacebook 風 掲示板ヘッダチェンジャー・モジュールのデモテーマのデモヘッダー部なしモジュール開発の手引き解体新書お問合せ練習場

携帯アクセス

qr code