2015-02-12 66 views
2

我正在爲我的項目使用簡單的策略模式。 我需要在某些枚舉中添加每個具體的策略接口類以供將來使用。爲了方便起見,我使用了一個臨時接口,應該在稍後進行替換,而不是實現每個具體的類來完成第一個設計。如何在程序級別確定某些java類/接口的存在?

這裏是簡單的代碼,我試過了。

public interface Strategy{ 
    public void execute(); 
} 

public interface NeedToImplement extends Strategy { 

} 

public enum strategyInfo { 
    A(ConcreteStrategyA.class, "blah blah"), 
    B(ConcreteStrategyB.class, "blah~~"), 
    C(NeedToImplement.class, "blah~~"); 
} 

到目前爲止,如果我是管理此代碼的唯一人,並且不要忘記實現每個類,那麼代碼本身不會成爲問題。 但這是團隊的工作,我會分裂每個執行我的團隊成員等等,如果有的話我們的隊員忘記實現任何類,這將導致災難,即使在運行時。

我想確保我們會通知您NeedToImplement是我的異常或錯誤運行一個程序,一旦存在(就像我可以從@Deprecated警告) 而我仍然可以編譯沒有從任何代碼編譯錯誤。

第一想法出現的時候在我的腦海中使用自定義的註釋爲NeedToImplement接口。但實際上我不確定更多細節。 plz闡述細節,如果我的想法是有效的。如果不是,比Ctrl + F更好的建議也會受到讚賞。

+0

你可以將其標記爲過時,你應該得到一個警告。 – immibis 2015-02-12 07:56:48

+0

至於比Ctrl-F更好的東西:在Eclipse中點擊NeedToImplement並按下Ctrl-Shift-G。 – immibis 2015-02-12 07:57:24

+0

Thx提到,就像你提到的,棄用只會產生警告。是否有任何其他方式來使自定義註釋將生成異常,而不是警告? – BinaryProbe 2015-02-12 08:07:37

回答

1

你能做什麼將是:

  1. 馬克臨時界面在你JavaDoc@Depreceated標籤。您還可以提供有關開發人員應該使用什麼/什麼時候的信息。

  2. 你可以做的另一件事來檢查接口是否存在,可能是使用諸如JUnit之類的東西來連接一個簡單的單元測試,這些測試將在代碼編譯時運行。大多數編譯工具(如ANT或Maven)都應允許您在編譯週期結束時附加測試腳本。如果測試失敗,那麼,您的臨時界面將仍然存在。

+0

我認爲單元測試的方法是不容易的。如果OP使用CI(每個人都使用CI,_right_?),那麼它會立即標記未完成的工作。 – 2015-02-12 08:12:34

0

,你可以在你的execute()方法使每個類的新實例,我想會爲

您爲每個類,你將一個空的類中的每個動作或類似的項目實施後來落實並在每個構造放置一個警告在您選擇

相關問題