我的代码开始看起来失控,所以我想我应该寻求帮助。
我有一个实现接口(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/