ゲーム製作にはめちゃくちゃ便利
ちょっとした事なら継承の代わりに使える
言語はLuaだが、C#でも考え方は同じだと思うから貼っておく(C#と違ってラムダみたいな短い書き方出来ないけど十分使えるから、C#だともっと便利になる)
https://github.com/kgtkr/MachShooting/blob/master/Project/BuildData/script/Lib/cmd.lua

普通なら分かりにくい書き方で敵の動作を書かないといけないけど、これを使えば、
直観的、再利用可能、拡張性が高い、継承をやるまでもない簡単な機能追加が出来る
と言うメリットがある

C#風に書くとこのような書き方で敵の動作を書けるようになる(突進を行うプログラム)
void update(){
 if(this.cmd.Len==0){
  this.cmd.Add(new Wait(60));
  this.cmd.Add(new Action(()=>this.power=30));
  //※ULMは等速直線運動の略、fは継続フレーム数
  this.cmd.Add(new ULM(vec:()=>new Vec(player.x-this.x,player.y-this.y).Len(10),
                f:()=>距離(this,player)/10));
  this.cmd.Add(new Action(()=>this.power=0));
 }
}

もしこれで
this.cmd.Add(new ULM(vec:new Vec(player.x-this.x,player.y-this.y).Len(10),f:距離(this,player)/10));
とすると、Waitの間にプレイヤーが動いてしまったら対応出来ない