我将为一些本地企业创建一堆Java SE Application。
目前,这些应用程序将是内部部署应用程序,因此所有数据都将存储在运行应用程序的同一台计算机上。
但是,将来可能会有一些客户希望将数据切换到云端,而Presentation Layer则不会受到影响。
我正在Domain Driven Design
上阅读和研究很多东西几天,并试图找到设计可插拔数据访问层的最佳方法来实现这种迁移功能,而不会影响我的其他应用程序。我无法在网上找到任何有用的东西。
我想出了类似下面的内容:
public interface UserService {
public User createUser(User user);
public void deleteUser(User user);
}
public class UserDerbyService implements UserService {
// Apache Embedded Derby implementation of UserService
// For on-premise data storage
}
public class UserGaeService implements UserService {
// Google App Engine implementation of UserService
}
public class UserAwsService implements UserService {
// Amazon Web Services implementation of UserService
}
public class UserAzureService implements UserService {
// Microsoft Azure implementation of UserService
}
还有一个ServiceFactory
类来返回所需的实现。
public class ServiceFactory {
// Not comfortable with sending the type to every factory method each time.
public UserService getUserService(int type) {
switch(type) {
case DERBY_EMBD:
return new UserDerbyService();
case GOOGLE_APP_ENGINE:
return new UserGaeService();
// return other services
}
}
}
是否有更好的实施或资源,我应该看一下?