可插拔DAL设计,可轻松迁移到云端

时间:2015-05-28 14:33:42

标签: java domain-driven-design data-access-layer data-migration

我将为一些本地企业创建一堆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
    }    
  }

}

是否有更好的实施或资源,我应该看一下?

0 个答案:

没有答案