【问题标题】:Represent a workflow in an interface in Java在 Java 中的接口中表示工作流
【发布时间】:2025-11-30 09:15:02
【问题描述】:

我有类似的方法需要针对不同的概念实施。但是方法的调用应该是有序的。例如,假设我的方法是:

m1、m2、m3、m4。它们会有不止一种实现。所以,我想将它们收集在一个 Java 接口中。但由于他们相互依赖,这样做似乎有点奇怪。然后我决定在接口中定义一个方法,按顺序执行其他方法,但这一次接口没有反映它的用途。

那么,用 Java 接口及其实现表示此类有序方法调用的最佳实践是什么?

提前致谢

【问题讨论】:

    标签: java function interface call


    【解决方案1】:

    如果流定义得很好,你可以使用一种strategy pattern,通过定义一个实现流的抽象类,允许子类只定义流方法。例如:

    public interface MyInterface {
      m1();
      m2();
      m3();
      m4();
      flow();
    }
    
    public abstract class Strategy implements MyInterface {      
      public final void flow() {
         //implement the flow only
         m1();
         m2();
         m3();
         m4();
      }
    }
    

    通常,策略模式会允许子类覆盖 flow() 方法,但由于您不想这样做,所以您将 flow 方法标记为 final。这样,客户将只关心 m1,...,m4 的实现。