勉強日記

チラ裏

PoEAA ch14 Page Controller

martinfowler.com


Page Controller

An object that handles a request for a specific page or action on a Web site.

  • Webエクスペリエンスのほとんどは静的ページ
    • 1パス1ファイルの関連
  • 動的ページになると、複雑な関連になりうる
    • 【補】同じパス(=URI)でもパラメータによって異なるレスポンスを返したりする
    • 【補】異なるパスでも同じレスポンスを返したりするかも
  • 動的ページの場合でも、1パス - 1リクエスト処理ファイルだと単純明快
  • Page Controllerでは、1つの論理的なページにつき1つのInput Controllerを据える
    • 【補】Input ControllerMVCにおけるCにあたる
    • Controllerがページ自体というケースもある
      • Server Page
        • 【補】ASPとか
        • VとCとを兼ねるやつ

How It Works

  • スクリプト、またはServer Pageとして実装される
    • Server Page
      • 1ファイルでTemplate Viewとの組み合わせ
      • モジュールを適切に構築するのが困難
        • 単純なケースなら良い
        • リクエストの情報をもとにビューを選択する、となるとscriptletでは辛い
          • helperに委譲することで軽減
    • Script
      • リクエスト(URLとか)から情報を抽出する
      • モデルを構築して制御を移す
      • 返却するビューを選択肢、制御を移す
  • 必ずしも1つのクラスで構築する必要はない
    • helperに切り出すことで、重複を共通化する
  • Server Page/Scriptどちらかに統一する必要はない
    • コントローラロジックがほぼ/全くない場合はServer Pageが好適
    • コントローラロジックがある場合はScriptが好適
    • 統一することで得られる一貫性というメリットは、次のことで帳消しになってしまう
      • Server Pageに統一: scriptletまみれ
      • Scriptに統一: ほぼ何もしないスクリプトまみれ

When to Use It

  • Front Controllerとのトレードオフ
  • コントローラロジックの複雑性による
    • 複雑な場合: Front Controllerが好適
    • 単純な場合: Page Controllerが好適

英語

  • laden
    • 満載