【问题标题】:Providing extensions points in a Web application在 Web 应用程序中提供扩展点
【发布时间】:2016-01-29 20:54:14
【问题描述】:

我们的产品具有标准功能,我们的客户还可以根据他们的要求定制产品。但目前他们对核心产品代码进行了更改。 我想知道可用于使 j2EE 应用程序可扩展或可定制的方法。 要详细说明这一点,请阅读以下内容: 例如:考虑下面的类:

Class A{
    public void doSomething(Object o){
     // standard product functionality goes here.
     // due to client customizations. client code also goes here.
     }
}

在上述课程中,客户已将代码添加到核心产品代码中。理想情况下,产品代码不应根据开闭原则进行修改。

目前我们不直接允许客户端在方法中添加代码,但提供如下自定义点。

Class A{
    public ClassAExtension ext;
    public void doSomething(Object o){
     // standard product functionality goes here.
    // client code goes in doClientCustomizations();
     ext.doClientCustomizations(Object o);
     }
}

所以现在客户端使用“ClassAExtension”类来覆盖行为。然而,这种方法仍然不是那么优雅,并且使产品代码更加杂乱无章。

有哪些不同的方法或框架可以更优雅、更高效地完成这些事情?

【问题讨论】:

    标签: java jakarta-ee frameworks customization extensible


    【解决方案1】:

    您应该做的第一件事是通过使用单独的包和部署工件(因此为您的核心提供一个 JAR,为扩展提供一个 JAR),将作为标准产品的代码和作为扩展的代码清楚地分开。

    坚持基本的 Java 机制,例如,您可以在组件中指定挂钩方法,默认情况下不执行任何操作,但可以被扩展核心组件的自定义组件覆盖。

    一个小注解:如果不必维护古老的应用程序,就不要再使用 J2EE 这个词了。

    【讨论】:

    • 这就是我们目前正在做的,但它效率低下,因为我们必须在方法中的许多地方提供挂钩。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多