Java 1.6中是否有类似lambda语句的OOB Command接口?

时间:2014-04-04 14:13:35

标签: java lambda command-pattern design-patterns

很抱歉,如果这被问到,但我一直在想,并且无法谷歌解决方案而不是为了尝试的运气。

在一个类中实现Command模式时,这个单方法接口会在所有地方不断弹出。

public interface Command {
   void execute();
}

然后它会被重复使用很多次:

public void doAction1()
{
    perform(new Command () {
        @Override
        public void execute()
        {
            //do some crazy stuff
        }
    });
}
public void doAction2()
{
    perform(new Command () {
        @Override
        public void execute()
        {
            //do some event crazier stuff
        }
    });
}

public void doAction3()
{
    perform(new Command () {
        @Override
        public void execute()
        {
            //do a barrel roll
        }
    });
}

private void perform(Command command)
{
    command.execute();
}

不同的命名,不同的模块,甚至不同的软件---但是这一次反复重新实现,杂乱的源代码并且基本上没有什么新东西。

是否有任何通用的OOB单方法接口可以使用而不是每次我需要像lambda一样的句子时创建我自己的接口?以这种方式使用Runnable是否可以?难道不会在未来的源代码阅读器的脑海中造成混乱吗?

PS:现在,我知道,有一个带有lambdas的java 1.8和所有,但在我的工作中我们暂时坚持1.6(企业客户是如此的企业),所以我很欣赏这里的一些考古帮助。

1 个答案:

答案 0 :(得分:3)

是的,RunnableCallable(如果您需要返回结果)完全可以使用。