在我的公司,我们开发预制的 Web 应用程序。虽然我们的应用程序在许多情况下都按原样工作,但我们经常会收到复杂的定制请求。我们在尝试以结构化方式执行此操作时遇到问题。通用功能不应受到自定义的影响。目前我们正在研究 Spring Web Flow,它看起来可以处理我们需要的一部分。
例如,我们有一个在线购物,我们有一个客户的请求,要求在签出购物篮订单时必须将其写入专有的日志记录系统。使用 SWF,可以使用 ClientX Checkout Flow 继承我们的 Generic Checkout Flow,并使用执行自定义日志写入所需的状态对其进行扩展。这种情况似乎处理得很好。这意味着我们可以根据 Open/Closed 原则保持我们的通用结账流程不变并使用自定义功能对其进行扩展。我们的团队可以及时向通用结账流程添加功能,并且可以在不修改扩展程序的情况下将其分发给客户。但是,有时客户要求我们的页面进行定制。例如,在我们的在线购物应用程序中,客户请求多币种功能。在这种情况下,您需要修改视图以及流(控制器)。有没有一种技术可以让我扩展通用视图而不是修改它?到目前为止,似乎只有两种具有大多数基于模板的视图(JSP、Struts、Velocity 等)的解决方案
- 为每个客户提供特定版本的视图。这显然会导致实现爆炸
- 根据导致代码爆炸的参数(如果是 multipleCurrency 则)使应用程序可配置 - 必须在每个页面中检查许多配置条件
在这种情况下,最好的解决方案是什么?可能还有一些我不记得的其他定制案例。是否有一种基于组件的视图技术可以让我扩展某些基本视图并且这样做有意义。可配置 Web 应用程序问题的典型解决方案是什么?