2011-08-05 44 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