import std.stdio;
enum Message
{
OnDraw,
OnChange,
}
class TextBoxVew
{
private string delegate() stringGetter;
private void delegate(string) stringSetter;
public this(string delegate() stringGetter, void delegate(string) stringSetter)
{
this.stringGetter = stringGetter;
this.stringSetter = stringSetter;
}
private void onDraw()
{
writeln(stringGetter());
}
private void onChange(string newString)
{
stringSetter(newString);
}
public void messageInterpretation(Message message)
{
switch (message)
{
case Message.OnDraw:
onDraw();
break;
case Message.OnChange:
onChange("bar");
break;
default:
break;
}
}
}
void main()
{
string model = "foo";
auto view = new TextBoxVew({return model;}, (string s){model = s;});
view.messageInterpretation(Message.OnDraw);
view.messageInterpretation(Message.OnChange);
view.messageInterpretation(Message.OnDraw);
}