xxxxxxxxxx
import std;
interface Renderer {
}
void main()
{
Renderer renderer;
auto chip = new Chip();
// Test Draw
// 1. Init
chip.draw(renderer);
// 2. Hovered
chip.to(chip.hovered);
chip.draw(renderer);
// 3. Init
chip.to(chip.initial);
chip.draw(renderer);
// 4. Hovered
chip.to(chip.hovered);
chip.draw(renderer);
}
class Chip
{
int state = 7;
Behavior initial;
Behavior hovered;
interface Behavior {
void draw(Renderer renderer);
}
Behavior behavior;
class Init : Behavior {
void draw(Renderer renderer)
{
writeln("Chip.Init.draw(state=%s)".format(state));
}
}
class Hovered : Behavior {
void draw(Renderer renderer)
{
writeln("Chip.Hovered.draw(state=%s)".format(state));
}
}
this()
{
initial = new Init();
hovered = new Hovered();
behavior = initial;
}
void to(Behavior b)
{
behavior = b;
}
void draw( Renderer renderer )
{
behavior.draw(renderer);
}
}