[Seasar-user:14599] Re: 【Teeda】Pageクラス構成について

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2008年 6月 9日 (月) 09:10:24 JST


小林様


ご回答ありがとうございます。

では、以下のような場合は、どうすればいいのでしょうか?

<employee表マスタメンテ>
1.検索条件画面 (SearchInputPage.java)
2.検索結果画面 (SearchResultPage.java)
3.エントリー画面 (EntryEmployeePage.java)
4.確認画面       (ConfirmEmployeePage.java)

「ユースケース」の切り分けかた次第かとは思いますが

1で条件を入力し、2へ画面遷移をし
(但し、新規エントリーの場合は、3へ遷移)
2で選択したデータを3で表示
3で入力したデータから4へ遷移

このような場合、以下の抽象クラスを作成

1と2で共通の抽象クラス(AbstractSearchPage.java)
3と4で共通の抽象クラス(AbstractEntryPage.java)

ここまではいいかとは思いますが、2⇒3へ遷移する時
共通のプロパティ/メソッドがあると思います。

そこで、以下の2パターンも考えました。

案1
全ページで共通の抽象クラスを作成し、継承させる
ex:AbstractEmployeePage.java

この場合だと、ページによっては使用しないプロパティ/メソッドが
発生してしまい、混乱を招く可能性がある(かも)。


案2
1と2で共通の抽象クラス(AbstractSearchPage.java)
3と4で共通の抽象クラス(AbstractEntryPage.java)
これらを作成した上で、
12/34でさらに共有できそうなプロパティ/メソッドを
定義した抽象クラスを作成する。
ex:AbstractEmployeePage.java
public class AbstractSearchPage extends AbstractEmployeePage { }
public class AbstractEntryPage extends AbstractEmpoleePage { }

これらを各ページクラスが継承する。
1.検索条件画面
public class SearchInputPage exntends AbstractSearchPage { }

2.検索結果画面
public class SearchResultPage AbstractSearchPage { }

3.エントリー画面
public class EntryEmployeePage exntends AbstractEntryPage { }

4.確認画面
public class ConfirmEmployeePage extends AbstractEntryPage { }

ちょっと継承階層が複雑化してしまい、同様に混乱を招く可能性がある(かも)。
また、案1と同様に、ページによっては使用しないプロパティ/メソッドが
発生してしまいます。
ただ、メリットとしては案1よりも各ページで使用されるプロパティ/メソッドが
明確化されます。



抽象クラスの切り分け方で、いい方法があれば是非お教え下さい。


宜しくお願いします。


[E-MAIL ADDRESS DELETED] wrote on 2008/06/06 16:30:06:

> 小林 (koichik) です.
> 
> Date:    Fri, 6 Jun 2008 11:36:18 +0900
> From:    [E-MAIL ADDRESS DELETED]
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:14582] 【Teeda】Pageクラス構成について
> 
> > 「同一ユースケース(サブアプリケーション)の複数の画面で使われるロジック
は、
> > 各画面の共通の親Pageクラスに持たせる。 」
> > 
> > とありますが、プロパティも同様の事がいえるのでしょうか??
> > ⇒「同一ユースケース(サブアプリケーション)の複数の画面で使われるプロパ
ティ
> > も、
> > 各画面の共通の親Pageクラスに持たせる。 」
> 
> それでいいと思います.
> 
> > ・ユースケース共通のプロパティは共通スーパークラスに記述
> > ・アノテーションは、サブクラスにてそれぞれ必要な場合に
> >  setterを用意して記述する。
> 
> バリデータのアノテーションに target を
> 指定する方法もあります.
> 
> http://teeda.seasar.org/ja/extension/reverse/validation.html#特定の
> サブミットボタンが押されたときだけチェックするには
> 
> なお,スーパークラスのフィールドにアノテーションを
> 指定できるのは Teeda 1.0.13 以降になります.
> 
> 
> -- 
> <component name="koichik">
>     <property name="fullName">"Koichi Kobayashi"</property>
>     <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>     <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user



Seasar-user メーリングリストの案内