【问题标题】:Method invocation with condition beforehand java预先带有条件的方法调用java
【发布时间】:2013-09-26 06:04:01
【问题描述】:

我遇到了一个问题:

-如何为类中的所有方法设置前提条件,以便调用任何方法,检查这些前提条件,如果满足,则开始调用。如果不是,则抛出异常。

我需要那个做什么?我假设我的班级的任何实例都处于某种状态。如果状态不正确,我只是不想让某些方法被调用。

例如:如果我的班级是 Player 并且他的状态是 DEAD,我不希望在此状态下提高他的等级。

那个例子正是我需要的。类似于 PHP 中的操作过滤器或类似的东西。

我的意思是不要在所有方法开始时手动检查是否满足处于正确状态的条件。有没有符合我期望的解决方案?也许是一些设计模式之类的?

【问题讨论】:

  • 您可以将您的对象包装在拦截所有方法调用的代理中。这是一个非常高级的主题,您可能应该找到更好的解决方案,例如在相关方法的开头进行。

标签: java android methods filter invocation


【解决方案1】:

您可以将方法包装在 try-catch 控制语句中。

try{
...}
catch(preconditions){
...}

【讨论】:

    【解决方案2】:

    尝试使用面向方面的编程(AOP)

    您可以为类中的每个方法定义切入点并在那里检查您的状态。如果满足条件,则调用该方法,如果不满足,则抛出异常。

    【讨论】:

      【解决方案3】:

      唯一的解决方案会比较复杂;您最好在要进行检查的每个方法的开头调用检查方法。它只是更简单、自我记录,而且更有意义。

      【讨论】:

        猜你喜欢
        • 2023-01-27
        • 2015-08-11
        • 1970-01-01
        • 1970-01-01
        • 2014-08-02
        • 2013-07-17
        • 1970-01-01
        • 2015-07-14
        • 2015-10-14
        相关资源
        最近更新 更多