2015-02-12 24 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()方法使每个类的新实例,我想会为

您为每个类,你将一个空的类中的每个动作或类似的项目实施后来落实并在每个构造放置一个警告在您选择

相关问题