ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

Wicket (7)コンポーネント その2

「オープンソース徹底活用 WicketによるWebアプリケーション開発」を読み
Wicketについて学習しています。

前回の「Wicket (6)コンポーネント その1」に引き続き、コンポーネントについて。

1.コンテナ
  複数のコンポーネントを束ねて「コンテナ」を作成し、再利用することができる。
  特にコンテナの一種である「パネル」については、複数のコントロールを纏めて再利用可能とする点が
  ASP.NETでいうユーザーコントロールと似ていると思う。

2.<wicket:link>タグ
  スタイルシートJavaScriptを記述した外部ファイルを、相対パスを記述することで
  HTMLファイルに取り込み可能とする。

3.<wicket:head>タグ
  パネルが独自に使用するスタイルシートJavaScriptファイルを、
  パネルを使用するHTMLページの<head>タグ内に取り込むことを可能とする。

4.マークアップ継承
  オブジェクト指向の継承を、HTMLファイルの構成にも適用したもの。
  各画面で共通する部分を親ページに記述し、異なる部分を子ページに記述して
  子ページは親ページを継承する。
  各ページで共通する箇所を共通化する場合、コンテナなどを利用して部品化することは
  いままでも行ってきたが(Wicketではなかったが)、
  継承によって共通する箇所を親クラスに纏めるというのは斬新に思えます。

  ・・・ただし継承を導入すべきなのは、「is a」の関係が成り立つときである。
  このことを踏まえると、ページA(共通化する親ページ) is ページB(共通化できない子ページ)、という関係が
  成り立つケースは多いのか、またその親子関係が度重なる仕様変更に耐えられるかは、ちょっと疑問である。

  個人的には上記の「コンテナ」「パネル」を用いて共通部品化して、「has a」の関係と解釈し、
  ページB(共通化できないページ) has ページA(共通化したページ)、の実装のほうがスマートだと思う。