设计问题 - 模板模式与实现界面的枚举

时间:2011-06-01 20:46:36

标签: java design-patterns spring-mvc enums

我的代码开始失控,所以我想我会寻求帮助。

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

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

}

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

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

模板方法设计模式听起来很完美,但我对如何使用我目前的枚举实现感到困惑?我不想在我的枚举计算方法中添加一堆分支语句,并且难以维护。

我正在使用spring mvc,我为每个扩展基类的计算都有一个控制器。我在每个控制器中调用super.calculate(),我想保持相同。

有没有人对此场景有任何建议?我觉得当我开始设计时很好,但现在我不太确定。

1 个答案:

答案 0 :(得分:3)

我觉得很难让你有enum来实现这样的界面,特别是如果enum负责与数据库交互 - 听起来你可能会误用{{1} }}秒。

至于实际问题,我会创建一个基类(可能是抽象的),它包含enum方法的核心逻辑,并委托“其他方法”来计算抽象方法或受保护方法可以通过子类覆盖,以便您可以使用稍微不同的calculate(MyObject)实现来提供不同的行为。