gpt4 book ai didi

java - 将方法传递给类

转载 作者:行者123 更新时间:2023-11-29 03:41:52 26 4
gpt4 key购买 nike

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

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. 创建一个接口(interface),方法的数量与部件的数量一样多;
  2. 对于每种不同的情况,将一个匿名类实例传递给您的方法,该实例实现了具有特定于特定情况的逻辑的接口(interface)。

下面是解决方案的草图。

界面:

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...}
});

关于java - 将方法传递给类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12797590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com