0

我正在开发一个移动项目,目前使用 Parse (parse.com),它可以帮助我专注于与客户端合作。但是,我希望我的应用程序能够快速增长,迟早我会离开 Parse

由于这种情况,我想编写我的代码,尽可能减少对 Parse 的依赖,或者可以很容易地适应另一个类似于 Parse 的服务(甚至是我自己编写的服务器)。

Parse 提供 ParseUser 类,但是当我离开 Parse 时,我将不得不编写自己的 User 类。我现在想以某种方式做到这一点,将来,当 ParseUser 类不再存在时,我可以只使用旧的 User 类。

如果有什么好的设计模式,请指教!

4

2 回答 2

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 回答
0

最小化对 3d 方库的依赖的一种方法是围绕它创建一个包装器类。
不要直接从第三方库调用应用程序方法,而是调用包装类中定义的方法。

我不知道是什么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另一个实现切换,您也只需要在一个地方进行修改 -ParseWrapper项目的其余部分将保持不变。

于 2013-06-29T21:39:47.583 回答