Command pattern

http://en.wikipedia.org/wiki/Command_pattern
やっぱり、こういうスタイルの方がいいのかなぁ...

namespace EditorCommand
{
class Base
{
public:
  virtual void Execute(TextEditor& target) = 0;

  virtual ~Base()
  {
  }
};

/** Cut Command */
class Cut : public Base
{
public:
  virtual void Execute(TextEditor& target)
  {
      std::string s = target.GetSelectedText();

      target.DeleteRange(target.GetSelectStart(), target.GetSelectEnd());

      Clipboard.Copy(s);
    }
};
} // namespace EditorCommand

パターンだけ括り出すか…
と思ったけど、これだけだと括り出す必要もないね。