This Project Has Not Released Any Files
interface Unit { void attach(); void detach(); }
単純に三角と四角を描くことを考える
三角を描け(); 四角を描け();
三角にtextureを貼る
textureを有効(); 三角を描け(); textureを無効(); 四角を描け();
三角と四角を回転させる
回転を有効(); textureを有効(); 三角を描け(); textureを無効(); 四角を描け(); 回転を無効();
openglではこういったことはよくあることなのでinterface Unitを適用してみると
回転.attach(); texture.attach(); 三角.attach(); 三角.detach(); texture.detach(); 四角.attach(); 四角.detach(); 回転.detach();
こうなる。形を変えてみると
void draw(Unit[] units) { foreach (v; units) v.attach(); foreach_reverse (v; units) v.detach(); } draw([回転, texture, 三角]); draw([回転, 四角]);
コンテナとの相性がよくなり、コードが短くなって、可読性も高まる。