2009-08-05 70 views
3

在我的公司,我们开发预制Web应用程序。虽然我们的应用程序在很多情况下都能正常工作,但我们通常会收到复杂的定制请求。我们在尝试以结构化的方式执行此操作时遇到问题。通用功能不应受自定义影响。目前我们正在研究Spring Web Flow,看起来它可以处理我们需要的一部分。可定制的Web应用程序

例如,我们有一个网上购物,我们有一个客户的请求,在退房时,购物篮订单必须写入专有的记录系统。 使用SWF,可以继承我们的Generic Checkout Flow和ClientX Checkout Flow,并将其扩展为执行自定义日志写入所需的状态。这种情况似乎处理得很好。这意味着我们可以保持我们的Generic Checkout Flow的原样,并根据Open/Closed原则使用自定义功能扩展它。我们的团队及时向Generic Checkout Flow添加功能,并且可以在不修改扩展的情况下将其分发给客户端。 但是,有时客户请求我们的页面进行自定义。例如,在我们的网上购物应用程序中,客户端请求多种货币功能。在这种情况下,您需要修改视图以及流量(控制器)。有没有一种技术可以让我扩展通用视图而不修改它?到目前为止,只有两种解决方案具有大多数基于模板的视图(JSP,Struts,Velocity等)似乎是

  • 对于每个客户端都具有特定版本的视图。这显然会导致实施爆炸
  • ,使应用程序配置取决于参数(如果multipleCurrency当时),导致代码爆炸 - 许多是在每个页面

要检查的配置条件,会是什么这种情况下最好的解决方案可能还有一些其他定制案例我不记得。是否有一种基于组件的视图技术可以让我扩展某些基本视图,这是否合理? 什么是可配置Web应用程序问题的典型解决方案?

回答

1

每个定制点都意味着某种程度的条件性。

在可能的情况下,人们倾向于使用样式表来控制某些方面。例如,货币选择器的显示可能可以像这样完成。

对货币例子的另一个想法是:1是许多的限制性案例。所以模型提供了货币列表。该视图显示一个选择器(如果有很多的话)和一个固定的字段(如果只有一个)。相当明确的行为 - 易于测试可重用的其他情况。