2011-08-05 18 views
1

我有类似的方法需要针对不同的概念实施。但方法的调用应该是有序的。例如,假设我的方法是:在Java界面中表示工作流程

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

那么,用Java接口来表示这种有序方法调用的最佳实践和实现是什么?

在此先感谢

回答

5

如果流量被很好地定义,你可以通过定义一个实现了流动,使子类只定义流量方法的抽象类中使用一种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(); 
    } 
} 

通常情况下,策略模式将允许子类覆盖流量()方法,但因为你不想做,你标记流方法决赛。这样,客户只会担心m1,...,m4的实现。

+1

+1另请参见[当抽象类实现接口时](http://download.oracle.com/javase/tutorial/java/IandI/abstract.html)。 – trashgod