サーバーからデータを取得するために簡単に使用できるように、「ネットワーク接続」を設計しようとしています。しかし、私は設計上の問題に直面しています。
私NetworkUtil
が使用しようとしている私のクラスは次のように設計されました
class NetworkUtil
public NetworkUtil(URL, resultType); // resultType might be XML or RAW
public setListener(listener); // listener will notice when result has arrive
public addPostData(key, value);
public connect(); // connect start new thread, so result will shown in listener
interface NetworkUtilListener1
public onNetworkFail();
public onNetworkSuccess(URL, resultType, xml, raw);
interface NetworkUtilListener2
public onNetworkFail();
public onNetworkSuccessRAW(URL, resultType, raw);
public onNetworkSuccessXML(URL, resultType, xml);
結果が到着したら、resultType を確認し、そのパラメーターからの結果を使用します。ただし、上記の 2 つの例 (NetworkUtilListener1
およびNetworkUtilListener2
) では、JSON、画像、さらにはカスタム タイプなど、さらに多くのものが登場したときに将来使用する問題を検討しているresultType
ため、私のチームはそれを簡単に使用できます。
NetworkUtilListener1
のような長い未使用のパラメータがあります
onNetworkSuccess(URL, resultType, raw, xml, json, image);
思ったほど良いデザインではありません。
NetworkUtilListener2
ほとんどの場合、各プロジェクトで1つまたは2つのタイプの結果のみを好むため、それを使用する具象クラスに多くの空のメソッドを強制します。
onNetworkSuccessRAW(URL, resultType, raw);
onNetworkSuccessXML(URL, resultType, xml);
onNetworkSuccessJSON(URL, resultType, json);
onNetworkSuccessImage(URL, resultType, image);
このクラス構造の再設計について誰か助けてくれたり、注目すべき設計パターンを教えてくれたりできます。だから私はもっと良くなることができますNetworkListener
。