SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
Inversion of Control
とは?
doi
‒Martin Fowler
Inversion of Control is a key part of what
makes a framework different to a library.
Inversion of Control
• 制御の反転と訳される
• IoC と略される
例1
システムは入力を受け取り表示する
手続き的な制御
function AskUserNameAndPrint()
{
a = waitForInput();
print( a );
}
反転した制御
function AskUserNameAndPrint()
{
framework.WhenInputSomeString(
function doThis(string a)
{
print( a );
}
);
}
Call から Callback へ
呼出したい処理を記述
↓
呼び出されたい欲しい処理を記述
‒Hollywood principle
Don't call us, we'll call you.
例2
1秒おきに時刻表示してピッと鳴らす
手続き的な制御
while(1) {
t = getTime();

print( t.hour+ : +t.minutes+ : +t.seconds );
beep();
sleep(1);
}
反転した制御
eventMap map;
function listen(string event, function f)
{
map[event].push(f);
}
// implements (timer)
while(1) {
each( f in map[event] ) {
f();
}
sleep(1);
}
function playBeep()
{
beep();
}
listen( TimerEvent , playBeep );
function showCurrentTime()
{
t = getTime();
print( t.hour+ : +t.minutes+ : +t.seconds );
}
listen( TimerEvent , showCurrentTime );
frameworkimplements
依存がなくなる
現在時刻を表示する
↑依存が無い↓
音をならす
ゲームループ(Call)
と
タスクシステム(Callback)
実は身近な概念だったんです
次回は
Dependency Injection
についてやります

Weitere ähnliche Inhalte

Andere mochten auch

Andere mochten auch (6)

WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!
WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!
WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!
 
BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成BigQueryで集計するシステムを作って分かったKPI集計ツール作成
BigQueryで集計するシステムを作って分かったKPI集計ツール作成
 
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみたSQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
 
これでBigQueryをドヤ顔で語れる!BigQueryの基本
これでBigQueryをドヤ顔で語れる!BigQueryの基本これでBigQueryをドヤ顔で語れる!BigQueryの基本
これでBigQueryをドヤ顔で語れる!BigQueryの基本
 
少し幸せになる技術
少し幸せになる技術少し幸せになる技術
少し幸せになる技術
 
26 Disruptive & Technology Trends 2016 - 2018
26 Disruptive & Technology Trends 2016 - 201826 Disruptive & Technology Trends 2016 - 2018
26 Disruptive & Technology Trends 2016 - 2018
 

IoC とは