我正在开发移动项目,目前正在使用Parse(parse.com),它可以帮助我专注于与客户端合作。但是,我希望我的应用程序能够快速增长,我迟早会离开Parse
由于这种情况,我希望编写尽可能少依赖Parse的代码,或者可以很容易地调整另一个类似于Parse的服务(甚至是我自己编写的服务器)。
Parse提供了ParseUser类,但是当我离开Parse时,我将不得不编写自己的User类。我现在想要做到这一点,将来,当ParseUser类不再存在时,我可以使用旧的User类。
如果有任何好的设计模式,请告知!
答案 0 :(得分: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();
}
}
答案 1 :(得分: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
,项目的其余部分将保持不变。