我们开发产品,这些产品的业务逻辑实现为 EJB。想法是提供一个用户出口(用户可以覆盖默认行为的扩展点)。这应该是产品开发中的一个常见问题,但是我没有看到任何设计模式或抽象机制来支持覆盖用 Java 编写的业务逻辑。
用户出口可以是重写的 Bean 类或 groovy 脚本。是否有任何设计模式或设计考虑来开发可以使用某些 Java 类或脚本覆盖 EJB 的产品?
是否可以使用 AspectJ 来动态决定是使用默认实现还是使用用户特定实现中的方法(覆盖的用户退出代码)?
我们开发产品,这些产品的业务逻辑实现为 EJB。想法是提供一个用户出口(用户可以覆盖默认行为的扩展点)。这应该是产品开发中的一个常见问题,但是我没有看到任何设计模式或抽象机制来支持覆盖用 Java 编写的业务逻辑。
用户出口可以是重写的 Bean 类或 groovy 脚本。是否有任何设计模式或设计考虑来开发可以使用某些 Java 类或脚本覆盖 EJB 的产品?
是否可以使用 AspectJ 来动态决定是使用默认实现还是使用用户特定实现中的方法(覆盖的用户退出代码)?
根据您的评论,我建议使用策略模式来实现可插入逻辑算法。
然后使用像 Spring 这样的 IOC 容器将类连接到位。
如有必要,允许用户/客户端使用自己的配置覆盖此配置。因此,任何感兴趣的人都可以简单地实现您的界面并覆盖配置,以便应用程序使用该数据。
EJB 本身现在具有依赖注入,因此您可能也想研究一下。如果这些规定足够,您可能根本不需要 spring 来连接您的应用程序。不幸的是,我对他们不太熟悉,不知道是否可以进行自定义配置。
面向方面的编程是要走的路。使用 Spring 3 或 Plain AspectJ 的 AOP 使用户能够覆盖现有功能。
有关更多信息,请参阅 AspectJ in Action 手册。
希望它对某人有用。