是否有任何设计模式可根据设备类型在数据之间切换?

ash*_*ram 9 java design-patterns spring-mvc spring-mobile

我们有一个基于Spring MVC的Web应用程序.现在我们需要修改此应用程序,以便在智能手机上正确呈现.

为此,我们将为智能手机创建单独的JSP.因此,请求来自浏览器,我们将检查请求是否来自桌面然后我们将显示正常的JSP,或者如果请求来自移动,那么我们将显示智能手机的JSP.

我们将使用spring Mobile.

在某些情况下,我们还希望限制智能手机上的数据.我们可能不会在JSP中显示所有数据.

例如,我们可能只需在菜单中显示几个项目.桌面Web应用程序将显示完整菜单,而智能手机将显示较少的菜单项.即使我们将为桌面菜单和移动菜单使用不同的JSP,菜单项也来自数据库.

是否有任何设计模式可以帮助我们?我们不想写那些if else条件来检查设备类型.

Cod*_*imp 0

如果您使用 Spring 3 MVC,并且遵循控制器方法返回视图的正常模式,那么我认为最简单和最正确的方法是使用单独的方法来处理移动设备或使用相同的方法,但返回不同的视图(通过视图解析器)。

例如,我的方法可能会执行以下操作:

@RequestMapping
public String default(Model uiModel, HttpServletRequest request) {
  // Do common stuff here, like load your model

  if(request.getHeader("User-Agent").indexOf("Mobile") != -1) {
    return "normalForm";
  } else {
    return "mobileForm";
  }
}
Run Code Online (Sandbox Code Playgroud)

您甚至可以根据某种预定义模式动态构建名称,例如 iphone 获取“form_iphone”,Chrome 获取“form_chrome”。