Upload
pbalogh
View
254
Download
1
Embed Size (px)
Citation preview
The State Pattern
Thursday, March 18, 2010
The State PatternAn Appalling Exploration
Thursday, March 18, 2010
?
Thursday, March 18, 2010
?
Thursday, March 18, 2010
Thursday, March 18, 2010
Thursday, March 18, 2010
Thursday, March 18, 2010
Thursday, March 18, 2010
Thursday, March 18, 2010
Thursday, March 18, 2010
Thursday, March 18, 2010
Thursday, March 18, 2010
Thursday, March 18, 2010
Thursday, March 18, 2010
Thursday, March 18, 2010
Thursday, March 18, 2010
:)
Thursday, March 18, 2010
Why we need it...
Thursday, March 18, 2010
B. F. Skinner(do not do what he did)
Thursday, March 18, 2010
Thursday, March 18, 2010
Skinner box“Operant
Conditioning Chamber”
Thursday, March 18, 2010
Thursday, March 18, 2010
FAIL
Thursday, March 18, 2010
What you do depends on your state
Thursday, March 18, 2010
Blood test
Thursday, March 18, 2010
Thursday, March 18, 2010
Blood test
NotThing
Thursday, March 18, 2010
Thursday, March 18, 2010
Blood test
NotThing
Thing
Thursday, March 18, 2010
Thursday, March 18, 2010
Firstaid
Thursday, March 18, 2010
Firstaid
NotThing
Thursday, March 18, 2010
Thursday, March 18, 2010
Firstaid
NotThing
Thing
Thursday, March 18, 2010
Thursday, March 18, 2010
Firstaid
NotThing
Thing
Blood test
NotThing
Thing
Thursday, March 18, 2010
Firstaid
NotThing
Thing
Blood test
NotThing
Thing
Thursday, March 18, 2010
1. Repeatedly using same test
2. Answers to test are predictable and repeated
3. Test concerns one’s own internal matters
Thursday, March 18, 2010
Time to get practical.
Thursday, March 18, 2010
Thursday, March 18, 2010
public class Creature{ public function Creature() { trace(“Ecce Creature”); }}
Thursday, March 18, 2010
Thursday, March 18, 2010
1. Come to life
Thursday, March 18, 2010
1. Come to life2. Talk to us
Thursday, March 18, 2010
1. Come to life2. Talk to us3. Move around
Thursday, March 18, 2010
public class Creature{
public function Creature() { trace(“Ecce Creature”); }
public function zap() {}
public function talk() {}
public function walk() {} }
Thursday, March 18, 2010
public class Creature{
public function Creature() { trace(“Ecce Creature”); }
public function zap() {}
public function talk() {}
public function walk() {} }
Thursday, March 18, 2010
Thursday, March 18, 2010
Thursday, March 18, 2010
Thursday, March 18, 2010
... public function implant( b : Brain ) { mybrain = b; }...
Thursday, March 18, 2010
Thursday, March 18, 2010
public function zap() { // IF DEAD, BECOME ALIVE // IF ALIVE, BECOME DEAD
}
public function walk() {
}
public function talk() { }
Thursday, March 18, 2010
public function zap() { // IF DEAD, BECOME ALIVE // IF ALIVE, BECOME DEAD
}
public function talk() { // IF DEAD, DO NOTHING // IF ALIVE, DESCRIBE CANCER CURE
} public function walk() {
}
Thursday, March 18, 2010
public function zap() { // IF DEAD, BECOME ALIVE // IF ALIVE, BECOME DEAD
}
public function talk() { // IF DEAD, DO NOTHING // IF ALIVE, DESCRIBE CANCER CURE
}
public function walk() { // IF DEAD, DO NOTHING // IF ALIVE, WALK TO LAB
}
Thursday, March 18, 2010
x_x
Thursday, March 18, 2010
o_o
Thursday, March 18, 2010
0.0
Thursday, March 18, 2010
x_x
Thursday, March 18, 2010
?
Thursday, March 18, 2010
Thursday, March 18, 2010
public class Creature{ private var amIdead : Boolean;
public function Creature() { trace(“Ecce Creature”); amIdead = true;
}
public function zap() { if( amIdead ) { amIdead = false;
} else
{ amIdead = false;
}}
public function talk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ trace(“Listen to this...”); trace(“the secrets of eternity”);
}}
public function walk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ trace(“I’ll go to my lab”); trace(“and cure cancer”);
}}
}
Thursday, March 18, 2010
public class Creature{ private var amIdead : Boolean;
public function Creature() { trace(“Ecce Creature”); amIdead = true;
}
public function zap() { if( amIdead ) { amIdead = false;
} else
{ amIdead = false;
}}
public function talk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ trace(“Listen to this...”); trace(“the secrets of eternity”);
}}
public function walk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ trace(“I’ll go to my lab”); trace(“and cure cancer”);
}}
}
Thursday, March 18, 2010
public class Creature{ private var amIdead : Boolean;
public function Creature() { trace(“Ecce Creature”); amIdead = true;
}
public function zap() { if( amIdead ) { amIdead = false;
} else
{ amIdead = false;
}}
public function talk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ trace(“Listen to this...”); trace(“the secrets of eternity”);
}}
public function walk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ trace(“I’ll go to my lab”); trace(“and cure cancer”);
}}
}
Thursday, March 18, 2010
public class Creature{ private var amIdead : Boolean;
public function Creature() { trace(“Ecce Creature”); amIdead = true;
}
public function zap() { if( amIdead ) { amIdead = false;
} else
{ amIdead = false;
}}
public function talk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ trace(“Listen to this...”); trace(“the secrets of eternity”);
}}
public function walk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ trace(“I’ll go to my lab”); trace(“and cure cancer”);
}}
}Thursday, March 18, 2010
[clip: Igor drops Hans Delbruck’s brain]
Thursday, March 18, 2010
Thursday, March 18, 2010
public class Creature{ private var amIdead : Boolean; private var doIHaveDelbruckBrain : Boolean;
public function Creature() { trace(“Ecce Creature”); amIdead = true;
}
public function implant( b : Brain ) { mybrain = b; if( mybrain == DELBRUCK_BRAIN ) // how?? { doIHaveDelbruckBrain = true; } else { doIHaveDelbruckBrain = false; } }
public function zap() { if( amIdead ) { amIdead = false;
} else
{ amIdead = false;
}}
public function talk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ if( doIHaveDelbruckBrain ) {
trace(“Listen to this...”); trace(“the secrets of eternity”); } else { trace(“UNNNNNNNH”); }
}
Thursday, March 18, 2010
public class Creature{ private var amIdead : Boolean; private var doIHaveDelbruckBrain : Boolean;
public function Creature() { trace(“Ecce Creature”); amIdead = true;
}
public function implant( b : Brain ) { mybrain = b; if( mybrain == DELBRUCK_BRAIN ) // how?? { doIHaveDelbruckBrain = true; } else { doIHaveDelbruckBrain = false; } }
public function zap() { if( amIdead ) { amIdead = false;
} else
{ amIdead = false;
}}
public function talk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ if( doIHaveDelbruckBrain ) {
trace(“Listen to this...”); trace(“the secrets of eternity”); } else { trace(“UNNNNNNNH”); }
}
Thursday, March 18, 2010
public class Creature{ private var amIdead : Boolean; private var doIHaveDelbruckBrain : Boolean;
public function Creature() { trace(“Ecce Creature”); amIdead = true;
}
public function implant( b : Brain ) { mybrain = b; if( mybrain == DELBRUCK_BRAIN ) // how?? { doIHaveDelbruckBrain = true; } else { doIHaveDelbruckBrain = false; } }
public function zap() { if( amIdead ) { amIdead = false;
} else
{ amIdead = false;
}}
public function talk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ if( doIHaveDelbruckBrain ) {
trace(“Listen to this...”); trace(“the secrets of eternity”); } else { trace(“UNNNNNNNH”); }
}
Thursday, March 18, 2010
public class Creature{ private var amIdead : Boolean; private var doIHaveDelbruckBrain : Boolean;
public function Creature() { trace(“Ecce Creature”); amIdead = true;
}
public function implant( b : Brain ) { mybrain = b; if( mybrain == DELBRUCK_BRAIN ) // how?? { doIHaveDelbruckBrain = true; } else { doIHaveDelbruckBrain = false; } }
public function zap() { if( amIdead ) { amIdead = false;
} else
{ amIdead = false;
}}
public function talk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ if( doIHaveDelbruckBrain ) {
trace(“Listen to this...”); trace(“the secrets of eternity”); } else { trace(“UNNNNNNNH”); }
}
Thursday, March 18, 2010
public class Creature{ private var amIdead : Boolean; private var doIHaveDelbruckBrain : Boolean;
public function Creature() { trace(“Ecce Creature”); amIdead = true;
}
public function implant( b : Brain ) { mybrain = b; if( mybrain == DELBRUCK_BRAIN ) // how?? { doIHaveDelbruckBrain = true; } else { doIHaveDelbruckBrain = false; } }
public function zap() { if( amIdead ) { amIdead = false;
} else
{ amIdead = false;
}}
public function talk() { if( amIdead ) { // DO NOTHING -- I’M DEAD
} else
{ if( doIHaveDelbruckBrain ) {
trace(“Listen to this...”); trace(“the secrets of eternity”); } else { trace(“UNNNNNNNH”); }
}
Thursday, March 18, 2010