「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>IoC、AOP → DI → 依存性反転原則]] * 目次 [#ta0e3873] #contents *概要 [#af32539b] **IoC [#t5deb1ed] -IoC: Inversion of Control -制御の反転 **IoCとは? [#ub07bbf6] -個別の目的のために書かれたコード部分が、一般的で再利用可能なライブラリによるフロー制御を受ける形の設計。 -伝統的な手続き型プログラミングと比べると制御の方向が反転しているため、「制御の反転」と呼ばれる。 ***設計目的 [#y167aef0] -あるタスクの実行を実装から分離する。 --モジュールを置き換える際の副作用を予防する。 -あるモジュールを、目的とするタスクだけに集中させる。 --仮定しながらのコーディングから解放し、~ 契約に依拠してコーディングさせる(契約プログラミング)。 ***ユースケース [#icacf4b9] デザインパターンの例 -ソフトウェアフレームワーク -コールバック -スケジューラ -イベントループ -[[依存性の注入(DI)>DI]] *詳細 [#gbc5cdd4] **技法 [#kad205a3] オブジェクト指向プログラミングやその他のプログラミング・パラダイムにて応用される。 ***OOPでの技法 [#p64bb0c6] オブジェクト指向プログラミングにおける幾つかの基本的な技法 -主要な技法 --テンプレート・メソッド・パターン~ 簡単。派生クラスでメソッドをオーバーライドする。 --[[依存性の注入(DI)>DI]] -その他の技法 --Factoryパターン~ ---サービス(オブジェクト)の取得を抽象化するパターン ---内部に Template Method パターンを包含することが多い。 --ストラテジー・パターン ---アルゴリズム差し替えるためのパターン ---継承に依る多態、委譲や関数ポインタに依るリフレクションのパターンがある。 --サービスロケータ・パターン > 文脈化された参照 ---インターフェイスと実装の対をコレクションに保存、必要なときに取り出して利用。 ---Factory パターンに似ているが、必ずしも毎回インスタンスを生成するとは限らない。 ***他パラダイムでの技法 [#nb701d41] その他のプログラミング・パラダイムにおける幾つかの基本的な技法 -・・・ **[[依存性反転原則]] [#ob8c9a64] [[依存性反転原則]]とは関係しているが異なる。 *参考 [#v9a45773] -制御の逆転~ http://bliki-ja.github.io/InversionOfControl/ **Wikipedia [#h8e82ff6] -制御の反転~ https://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E3%81%AE%E5%8F%8D%E8%BB%A2 -契約プログラミング~ https://ja.wikipedia.org/wiki/%E5%A5%91%E7%B4%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0 ***[[デザイン・パターン]] [#j8b885e5] -Template Method パターン - Wikipedia~ https://ja.wikipedia.org/wiki/Template_Method_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3 -Factory Method パターン - Wikipedia~ https://ja.wikipedia.org/wiki/Factory_Method_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3 -Strategy パターン - Wikipedia~ https://ja.wikipedia.org/wiki/Strategy_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3 -Service locator pattern - Wikipedia~ https://en.wikipedia.org/wiki/Service_locator_pattern **関連 [#q041feca] ***[[AOP]] [#c53341bf] ***[[DI]] [#oc132c09] ---- Tags: [[:プログラミング]], [[:.NET開発]]