0

私はモバイル プロジェクトに取り組んでおり、現在、Parse (parse.com) を使用しています。これにより、クライアント側での作業に集中することができます。ただし、アプリケーションが急速に成長することを期待しており、遅かれ早かれ、Parse から移行する予定です。

そのような状況のため、Parse への依存度をできる限り下げてコードを記述したいと考えています。または、Parse に似た別のサービスを簡単に適用できるようにしたいと考えています (自分で記述したサーバーであっても)。

Parse は ParseUser クラスを提供しますが、Parse から移動するときは、独自の User クラスを作成する必要があります。そして、将来、 ParseUser クラスが存在しなくなったときに、古い User クラスを使用できるようにするために、今それをやりたいと思っています。

これに適した設計パターンがあれば、アドバイスをお願いします!

4

2 に答える 2

0

サード パーティ ライブラリへの依存を最小限に抑える 1 つの方法は、その周りにラッパー クラスを作成することです。
サードパーティ ライブラリからアプリケーション メソッドを直接呼び出すのではなく、ラッパー クラスで定義されたメソッドを呼び出します。

何が機能するかはわかりませんが、プロジェクトで次のように使用Parseするメソッドがあると仮定しましょう。parseData()

Parse p = new Parse();
p.parseData();

依存関係を最小限に抑えるにParseWrapperは、作業を委譲するだけのクラスを作成しParseます。

public class ParseWrapper{
   Parse p = new Parse();

   //....

   public void parseData(){
       p.parseData(); // Delegate the real work to Parse.
   }
}

今、あなたのプロジェクトのどこでもParseWrapper代わりに使用しますParse

ParseWrapper p = new ParseWrapper();
p.parseData();

このようにすると、後で別の実装に切り替える必要が生じた場合でもParse、1 か所だけを変更するだけで済みますParseWrapper。つまり、プロジェクトの残りの部分はそのまま残ります。

于 2013-06-29T21:39:47.583 に答える
0

インターフェイスを使用できる場合は、かなり簡単です。これは非常に最小限の例です。

// Define a proper interface for User instances
interface User() {
    public String getName();
}

// Define the interface that all UserServices must use
interface UserService {
    public User getUser();
}

// Specialized implementation using Parse
class ParseUserService implements UserService {
    public User getUser() {
        return new ParseUser();
    }
}

// Specialized implementation using Other
class OtherUserService implements UserService {
    public User getUser() {
        return new OtherUser();
    }
}

// No need to care about implementation details
class App {
    private UserService userService;

    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    public void doStuff() {    
        User user = userService.getUser();
        String name = user.getName();
    }
}
于 2013-06-29T21:23:31.227 に答える