1

Webページをリクエストして解析し、結果に応じて次に何をすべきかを決定するプログラムがあります。

例: プログラムはページから何らかの要素を取得する必要があります。これを「目標要素」と呼びましょう。プログラムが「someOtherElement」を要求して取得すると、実行が続行されます。「aimElement」を取得した場合、Executor はいくつかのリンクをクリックする必要があり、実行が終了して次のタスクに進みます。プログラムは「aimElement」の取得を 20 回試みました。また、「aimElement」は将来変更される可能性があります。

シンプルに思えますが、これを適切な oo-design で実装する方法がよくわかりません。Task と Executor の 2 つのオブジェクトを考えています。Task にはすべての条件が含まれ、Executor は Task を引数として受け取り、Task のニーズに基づいて要求を行います。しかし、executor が生のページを Task 自体に返すと、Task は複雑になり、それらの間に強いつながりができます。Executor がページの既に解析された要素を返す場合、Executor は何をどのように解析するかを知る必要があり、また複雑になり、強力な接続が存在します。

私の説明が明確かどうかはわかりませんが、デザインパターンについてアドバイスをいただけたり、同様の問題に関する経験を共有していただけたりするかもしれません。

4

1 に答える 1

2

プッシュ パーサーを使用して、Tasks が関心のあるイベントに自分自身を登録できるようにします。基本的に、パーサーはドキュメントを一度解析し、すべてのサブスクライバーに関心のある種類の情報を通知します ("img with URL X" または「Yへのリンク」)。

次に、サブスクライバーにクエリを実行して次に何をすべきかを確認するか (すべてのイベントの最後/後)、またはリスナー アプローチを使用してサブスクライバーに通知させることができます。

最良の部分は、Java には HTML 用のプッシュ パーサーが既にあると確信しているため、かなりの作業を回避できることです。

于 2013-01-13T18:34:21.143 に答える