java - 设计问题 - 带有枚举实现接口(interface)的模板模式

标签 java design-patterns spring-mvc enums

我的代码开始看起来失控,所以我想我应该寻求帮助。

我有一个实现接口(interface)的枚举类。该方法所做的第一件事是使用 jndi 从池中获取数据库连接。然后根据对象属性执行一系列计算并返回结果。

public interace MyInterface {  
     public ResultObject calculate(MyObject myObject); 

}

public enum MyEnum implements Myinterface {
    public ResultObject calculate(MyObject myObject) {
         //several steps
    }
}

仅进行一次计算就可以正常工作。我现在有更多的计算方法,每次计算只需进行一些更改。

模板方法设计模式听起来很适合这个,但我对如何使其与我当前拥有的枚举实现一起工作感到困惑?我不想在我的枚举计算方法中添加一堆分支语句并使其难以维护。

我正在使用 spring mvc,并且我有一个用于扩展基类的每个计算的 Controller 。我在每个 Controller 中调用 super.calculate(),我希望保持不变。

有人对这个场景有什么建议吗?我觉得刚开始时设计不错,但现在不太确定了。

最佳答案

我发现你有一个实现这样的接口(interface)的enum真的很令人困惑,特别是如果enum负责与数据库交互 - 听起来像你可能误用了enum

对于实际问题,我将创建一个基类(可能是抽象的),其中包含 calculate(MyObject) 方法的核心逻辑,并将计算的“其他方法”委托(delegate)给抽象方法或可由子类重写的 protected 方法,以便您可以拥有稍微不同的 MyInterface 实现,从而提供不同的行为。

关于java - 设计问题 - 带有枚举实现接口(interface)的模板模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6207451/

相关文章:

java - 无法看到 BCEL 所做的更改

java - 为什么要分离接口(interface)和实现?

design-patterns - 如何限制使用 redis 的登录尝试?

design-patterns - 重构 switch 语句时何时选择策略而不是多态

SpringMVC url 路径模式替换

java - 如何使用@ResponseBody从 Controller 获取字符串数组?

java - Spring Session 与 Spring Security 创建两个 session

java - Android LibGDX : tiled map covers animation

java - 如何创建基于日期的ImageView(每周变化)

java - 将条件移动到类时出错