3

具体的には、私が使用している JSON RPC API があります。API のバージョンによって仕様が異なる場合がありますが、接続したときにいつでもバージョンがわかります。利用可能な JSON RPC メソッドを利用する約 30 のラッパー メソッドがあります。

何かを呼び出さなければならない方法で変更が見られる場合はいつでも、switch ステートメントを挿入しますか? または、API の機能のほとんどが変更されておらず、コードを変更する必要がない場合でも、管理を容易にするためにまったく新しいメソッドを作成しますか?

編集:私は自分のコードがこの API の複数のバージョンで動作するようにしたいことを忘れていました。バージョン 1.8 のこのサービスを提供する別のサーバーでコードを使用したい場合があるため、バージョン 2.0 で動作するようにコードを更新することはできません。

4

3 に答える 3

7

外部 API を独自の内部インターフェイスの背後に隠し、外部 API の特定のバージョンを処理する実装を作成します。

つまり、ユーザーと外部 API の間に別のレイヤーを追加します。

于 2013-01-16T00:25:27.720 に答える
1

継承のための仕事のように聞こえます。

バージョンごとに基本クラスまたはインターフェイスとサブクラスを作成できます。たとえば、1 つのメソッドのみを変更するポイント リリースがある場合など、役立つ場合は、サブクラスをサブクラス化することもできます。

于 2013-01-16T00:24:43.093 に答える
0

データアクセスオブジェクトの同じ考え方を使用して、コードを整理できます。データアクセスオブジェクトとは、データベースにクエリを実行してデータベースからデータを取得するメソッドを持つ個々のクラスであるということです。たとえば、Personというクラスがあり、personクラスがデータベースにアクセスして、電話番号、名、姓などのデータを取得する必要がある場合、このDAO(Short for Dataアクセスオブジェクト)を使用してこれらの値を取得できます。それの利点は、上司がデータベースをMySQLからMongoDBに変更するように依頼したとしましょう。そうすれば、Personクラスから単一のコードを変更する必要はなく、MySQLではなくMongoDBで動作するようにDAOクラスを変更するだけです。私の提案は、使用している外部API用に構築されたクラスを作成し、アプリケーション内のすべてのクラスがこのクラスを使用して外部APIと対話できるようにすることです。APIが更新されるたびに、このクラスを変更(修正)するだけでよく、他のクラスに触れる必要はありません。私が何を意味するのか理解していただければ幸いです=)

于 2013-01-16T00:32:13.643 に答える