问题描述: 我希望能够将方法列表传递给只有一个类定义方法的其他类。如果方法(其中一些具有输入参数和非无效返回类型)在一个类中定义,我希望能够将其中一些列表(可能具有重复)作为其他类的构造函数的参数传递给它们。数组方法:适配器模式?
代码描述: 下面的代码是一个粗例如,如果它从主目标减损可以忽略。另一个例子,除了下面的例子之外,其中的方法是int Add(int n1,int n2),int Subtract(int n1,int n2),Multiply等等。 int MathOperation(int n1,int n2)。
尝试解决问题: 适配器模式似乎有我需要的功能,但我只看到示例,其中在接口中的方法没有输入或输出参数。我为这个问题编写的一个示例实现在下面发布。
问题比喻: 你有一个随机图片发生器的网络服务。有30个突变可以应用于图像。客户端连接并点击一个“生成”按钮,其中一些函数的随机列表被传递给Web服务中的其他类,然后继续使用它自己的数据运行这些函数,同时收集并可能重新使用返回值来生成一些变异的猫图像。它不能显式调用其他类中的方法,因为该过程需要在运行时随机完成。这就是为什么我倾向于生成随机列表的方法,当点击'生成'按钮时按顺序执行。
我希望我已经清楚。
public class SomeClass {
...
public double UseWrench(double torque, boolean clockwise) { ... }
public double UsePliers(double torque, boolean clockwise) { ... }
public double UseScrewDriver(double torque, boolean clockwise) { ... }
public boolean UseWireCutters(double torque) { ... }
interface IToolActions {
double TurnFastener(double torque, boolean clockwise);
boolean CutWire(double torque);
}
private IToolActions[] toolActions = new IToolActions[] {
new IToolActions() { public double TurnFastener(double torque, boolean clockwise) { double UseWrench(double torque, boolean clockwise); } },
new IToolActions() { public double TurnFastener(double torque, boolean clockwise) { double UsePliers(double torque, boolean clockwise); } },
new IToolActions() { public double TurnFastener(double torque, boolean clockwise) { double UseScrewDriver(double torque, boolean clockwise); } },
new IToolActions() { public boolean CutWire(double torque) { boolean UseWireCutters(double torque); } },
};
}
public class Worker<T> {
public List<? extends IToolActions> toolActions;
public Worker(List<? extends IToolActions> initialToolSet){
toolActions = initialToolActions;
}
}
我想我明白你的意思,但我需要更好的问题描述或更好的例子。保留似乎是方法参数和返回值。您将不得不定义一些方法来处理这些问题,并且您的特定要求将决定如何工作。没有通用的“X”总能解决这类问题。也许可以解释你自己选择参数有什么问题,这可能是一个开始。 – markspace
如何使用'List'? –
2015-05-04 06:08:25
如果您希望它快速且动态,您可以使用反射并仅列出该类中的所有方法,获取它们的参数并将它们填充到一个循环中。但是,这不会像下面的好界面那样干净 – Falco