PoEAA ch14 Two Step View
- Two Step View
- How It Works
- When to Use It
- Example: Two Stage XSLT (XSLT)
- Example: JSP and Custom Tags (Java)
Two Step View
Turns domain data into HTML in two steps:
first by forming some kind of logical page,
then rendering logical page into HTML.
- ページが多数あるWebアプリケーションにおいて、一貫した見た目と構造にしたい
- さもないとユーザが混乱する
- Template ViewやTransform Viewでは実現が難しい
- プレゼンテーションロジックが各ビューに散らばるから
- 【補】どちらかといえばTransform Viewのほうがまだ共通化しやすい
- プレゼンテーションロジックが各ビューに散らばるから
- 1箇所直せば全ページに変更が範囲されるようにしたい
- データからHTMLへの変換を2段に分割することでこれを実現する
- 1段目: 論理的なプレゼンテーションに変換
- 2段目: 実際のフォーマットに変換
- 2段目を修正すれば前ページに見た目の変更が反映される
How It Works
- Logical Screen
- 1段目の変換で出力されるプレゼンテーション指向な中間形式
- 次のようなメンバをもつかも
- ヘッダ
- フッタ
- テーブル
- 選択UI
- etc.
- 1段目の変換: ドメイン指向のモデルからプレゼンテーション指向のデータ構造への変換
- 2段目の変換: プレゼンテーション指向のデータ構造からHTMLへの変換
- データ構造の各要素について認知しており、HTMLへのレンダリング方法を知っている
- 出力結果は当然、Logical Screenから導出可能なものでなければならない
- 実装方法はさまざま
- 一番簡単なのはXSLT
- 別の方法: クラスを使う
- 上記いずれの方法もTransform Viewベース
- Template Viewでもできる
- 中間形式ではカスタムタグを用いる
- HTML用のWYSIWYGエディタは使えない
When to Use It
- 変換を2段に分けることがキモ
- サイト全体への変更を容易にする
- 複数の見た目を容易するのにも役立つ
- 比較的レアケースだが増加しつつある(書籍執筆当時)
- e.g. 顧客ごとに変えるとか
- ロジックの重複をなくし、数を減らす
- Two Step Viewを採用しない場合、
ページ数 x 見た目
の種類の変換ロジックが必要 - Two Step Viewを採用すれば、
ページ数(1st stage) + 見た目(2nd stage)
ですむ - 【所感】Gang of FourのBridge Patternに似てますね
- Two Step Viewを採用しない場合、
- プレゼンテーション指向の中間データ構造をどれだけうまく作れるかがキモ
- デザインに凝ったWebサイトではうまくいかないことも
- ページ1つ1つが異なりすぎて共通点を見いだせない
- 弱点
- HTML関連ツールが使えない・デザイナとプログラマが分業できない
- Template Viewと比較しての弱点
- 慣れないと実装が難しい
- モジュールの呼び出しのレイヤーが増える
- ひとたび慣れさえすれば、定形コードの繰り返しを減らしてくれるのだが
- HTML関連ツールが使えない・デザイナとプログラマが分業できない
- 別々のデバイス向けに複数の2nd stageを用意する、ということも可
Example: Two Stage XSLT (XSLT)
- 前述の説明どおりのやつ