2

ページオブジェクトパターンを使用して、Webアプリの相互作用をモデル化しています。アプリのほとんどのページには、「ログイン」、「ログアウト」、「ホーム」などの標準オプションがあります。さらに、すべてのページに保護されたWebDriver参照があります。

そこで、すべてのページが継承するスーパースーパークラス( GrandpaClass )を作成しました。これには、保護されたWebDriver参照と、ドライバーを初期化するためのコンストラクターのみが含まれます。

次に、ほとんどのページが継承するスーパークラス( PapaClass)を作成しました。これはGrandpaClassを継承し、上記の標準メニュー機能(ログインなど)を追加します。

この問題は、同じメニューアクションで異なるページが表示される可能性がある場合に発生します。たとえば、ログアウトすると、ログインページに移動するか、エラーページに戻ることができます。ただし、ログイン機能はPapaClassにあるため、このクラスは、彼から継承する別のページを返す必要があります。これにより、スーパークラスはそのサブクラスに依存します。

ストラテジーのようなものを使用して、一般的なメニュー機能を除外することを考えていました。したがって、PapaClassは、機能を維持する代わりに、Menuオブジェクトへの参照のみを維持します。

これは良い考えですか、それともこれを解決するためのよりエレガントな(またはより簡単な)方法がありますか?

ありがとう。

4

2 に答える 2

2

Menuオブジェクトは良いアイデアだと思いますが、PapaClassは必要ありません。すべてのページをGrandpaClassから継承し、共通の要素がある場合はCompositionを使用できます。継承では、「メニューのあるページです」と言っています。これは、ページにメニューがあるだけであることを示唆しています。

于 2012-06-27T01:49:17.503 に答える
0

はい、何かに基づいてページを返すための別の戦略が必要な場合は、これで問題ないと思います。あなたの問題の説明は、あなたが問題を過度に複雑にしていると私に信じさせる傾向があります。

于 2012-06-26T19:45:27.010 に答える