Command パターン

デザインパターンちゃんと勉強をしようと思ったので結城さんの本を 1 つ 1 つ実装してみる。 前回の Proxyからの続き。

動作を表現するオブジェクトを示す。Command オブジェクトは、動作とそれに伴うパラメータをカプセル化したものである。

Wikipedia では以下のようなものが Command パターンにすると良いって書いてる

  • 複数レベルのアンドゥ
  • トランザクション的振る舞い
  • プログレスバー
  • ウィザード
  • GUI のボタンとメニューの項目
  • スレッドプール
  • マクロの記録
  • 並列処理
  • 移動可能なコード

状態が多いクライアントアプリケーションのパターンが多くて PHP ではなかなか想像がしにくい

今回の書籍側は GUI で描画するようなものだったので違う例で実装。参考にしたのは以下

クラス図

Command PlantUML

自分としての理解・疑問

  • これいっつも「やっちゃって大丈夫なのかな?」と思ってた実装
  • 再利用性を高めるというのは理解できるのだけど、分離されているか?と思うとどうしてもできてない印象があって「んー」と思ってた。
  • 規範がしっかりしてればこういう形もアリなんだなと。
  • Undo Redo は便利そう。Memento ですね。