我正在研究控制物理安装的东西。 安装存在一个网格,每个单元格可以是黑色或白色。 我有这种方法:
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中可能吗?
答案 0 :(得分:4)
如果您需要使用一些更改部件来自定义方法的行为,
解决方案的草图如下。
界面:
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...}
});