Controllerのデザインパターン

以前、「登録→確認→完了の画面遷移の憂鬱 - public static void main」を書いたのですが、最近になって取り上げた画面遷移にもデザインパターンとして名前がついていることを知りました。
よく知られているGoFデザインパターンではなく、PofEAA(エンタープライズ アプリケーションアーキテクチャパターン)と呼ばれるパターンです。

Page Controllerパターン

┌──────┐   ┌───┐
│ コントローラ │→│ビュー  │
└──────┘   └───┘

コントローラとビューが1対1の関係にあるパターン。
場合によっては、コントローラとビューが一緒のときもある。
メリットとしては、構成がわかりやすくなることがあげられる。
PHPで一つのファイル内で、いろいろと処理を行っている場合はこれあたる。
あと、以前取り上げたリクナビCAFE 人脈BANKもこれにあたると思われる。

参考:
http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?PageController


Front Controllerパターン

               ┌───┐
            ┌→│ビュー │
            │   └───┘
┌──────┐│   ┌───┐
│ コントローラ  │┼→│ビュー │
└──────┘│   └───┘
            │   ┌───┐
            └→│ビュー │
               └───┘

一つのコントローラに複数のビューがあるパターン。
よく似た処理を行うときに、ページごとにそれらの処理を書いていたら煩雑になるので、それを避けるために使う。
ファイル数が少なくなることもメリットとしてあげられる。
RailsStrutsなどのフレームワークを使うと大体このパターンになっている。

参考:
http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?FrontController


終わりに

下記のサイトでPofEAAのデザインパターンについて取り上げられています。
http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/
Active Recordパターンなどどこかで聞いたことがあるパターンが多数載っています。
邦訳されている本があるので、この機会に購入して読んでみたいと思います。

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION)

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION)