将方法传递给一个类

时间:2012-10-09 10:04:22

标签: java processing

我正在研究控制物理安装的东西。 安装存在一个网格,每个单元格可以是黑色或白色。 我有这种方法:

void programRunner(int message) {
        if (message == STARTSHOWTIME) {
          println("showtime");
        }
        if (message == ENDSHOWTIME) {
          println("parse new state");
          boolean[][] nextState = randomState();
          gridCommunicator.nextState(nextState);
          checkMatrix.set(nextState);
        }
      }

它传递一个多维数组,其中true为白色,false为黑色。 只要安装准备就绪就可以调用它来设置位置和下一个位置。

然而,应该有多种模式,一种是随机的黑色和白色,另一种是绘制字母,一种是显示图像等。

我想将每种模式作为对象,我只是不知道我正在寻找什么。 举个例子:

class Program {

  String programName;

  Program(String programName) {
    this.programName = programName;
  }

  // . . . . . . . . . . . . . . . . . . .

  void programRunner(int message) {
    if (message == STARTSHOWTIME) {
      println("showtime");
    }
    if (message == ENDSHOWTIME) {
      println("parse new state");
      boolean[][] nextState = randomState();
      gridCommunicator.nextState(nextState);
      checkMatrix.set(nextState);
    }
  }

  // . . . . . . . . . . . . . . . . . . .


}

方法programRunner现在仍然是相同的,并且要有一个不同的方法我必须创建一个新类。但我不想要一个新的类,我更喜欢我可以创建对象并传递给它的方法programRunner应该是什么样子。 这样的东西在java中可能吗?

1 个答案:

答案 0 :(得分:4)

如果您需要使用一些更改部件来自定义方法的行为,

  1. 使用与部件一样多的方法创建界面;
  2. 对于每种不同的情况,向您的方法传递一个匿名类实例,该实例使用特定的特定于案例的逻辑实现接口。
  3. 解决方案的草图如下。

    界面:

    interface Strategy {
      void m1(); void m2();
    }
    

    你的方法:

    void actionMethod(Strategy s) {
      s.m1(); s.m2();
    }
    

    调用方法:

    actionMethod(new Strategy() { 
       public void m1() { ...stuff 1...}
       public void m2() { ...stuff 2...}
    });