2

アプリの更新中に下位互換性を維持するという問題に直面しました。私はクライアント/サーバー アーキテクチャを使用しており、クライアントはサーバーに情報を送信し、それに応じて最新のデータを受信します。アプリの次のバージョンでは、いくつかの新しいフィールドとメソッドが追加されています。また、古いバージョンのクライアントを使用すると、サーバーにいくつかのエラー (null ポインターや不適切なワークフローなど) が表示される場合があります。null の新機能を確認できますが、3 ~ 4 の異なるバージョンのクライアントがある場合、スパゲッティ コードと多くの潜在的な隠れたバグが発生します。

この問題の解決に役立つ設計パターンはありますか? 異なるクライアント バージョンでどのように対応するのですか?

前もって感謝します。

4

3 に答える 3

3

このアプローチを試してください: 各クライアント メッセージのログイン メッセージにバージョン フィールドを追加します。

後者は、セッションがない場合に機能します。バージョン フィールドがない場合は、「バージョン 0」であることがわかります。

サーバーでは、バージョン フィールドに基づいてメッセージをハンドラーにディスパッチします。多くのハンドラーは、一般的なケースとメッセージ バージョンごとの単純な拡張を処理する抽象基本クラスに分割できます。

これにより、スパゲッティ コードを回避できます。

于 2012-10-02T09:25:59.837 に答える
2

アダプタパターンを見てみました。これを使用して、さまざまなクラスを連携させることができます。

于 2012-10-02T09:22:06.593 に答える