- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-[[戻る>.NET開発]]
* 目次 [#ta0e3873]
#contents
*概要 [#af32539b]
**IoC [#t5deb1ed]
-IoC: Inversion of Control
-制御の反転
**IoCとは? [#ub07bbf6]
-個別の目的のために書かれたコード部分が、一般的で再利用可能なライブラリによるフロー制御を受ける形の設計。
-伝統的な手続き型プログラミングと比べると制御の方向が反転しているため、「制御の反転」と呼ばれる。
***設計目的 [#y167aef0]
-あるタスクの実行を実装から分離する。
--モジュールを置き換える際の副作用を予防する。
-あるモジュールを、目的とするタスクだけに集中させる。
--仮定しながらのコーディングから解放し、~
契約に依拠してコーディングさせる(契約プログラミング)。
***ユースケース [#icacf4b9]
デザインパターンの例
-ソフトウェアフレームワーク
-コールバック
-スケジューラ
-イベントループ
-[[依存性の注入(DI)>DI]]
*詳細 [#gbc5cdd4]
**技法 [#kad205a3]
オブジェクト指向プログラミングやその他のプログラミング・パラダイムにて応用される。
***オブジェクト指向プログラミングにおける幾つかの基本的な技法 [#p64bb0c6]
-テンプレート・メソッド・パターン~
簡単。派生クラスでメソッドをオーバーライドする。
-[[依存性の注入(DI)>DI]]
-その他
--Factoryパターン~
サービス(オブジェクト)の取得を抽象化するパターン
---サービス(オブジェクト)の取得を抽象化するパターン
---内部に Template Method パターンを包含することが多い。
--ストラテジー・パターン~
多態(ポリモーフィズム)、リフレクション(関数ポインタや委譲)に依るパターン。
--サービスロケータ・パターン > 文脈化された参照~
Factory パターンに似ているが、必ずしも毎回インスタンスを生成するとは限らない。
--サービスロケータ・パターン > 文脈化された参照
---インターフェイスと実装の対をコレクションに保存、必要なときに取り出して利用。
---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_パターン
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_パターン
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_パターン
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開発]]