方法数组:适配器模式?
问题描述:我希望能够将方法列表传递给仅在一个类中定义了方法的其他类。如果这些方法(其中一些具有输入参数和非 void 返回类型)在一个类中定义,我希望能够将其中一些方法的列表(可能具有重复项)作为参数传递给其他类的构造函数。
代码说明:下面的代码是一个粗略的示例,如果它偏离了主要目标,则可以忽略它。除了下面的例子之外,另一个例子是方法为int Add(int n1,int n2),int Subtract(int n1,int n2),乘法等。并且该接口有一个名为int MathOperation(int n1,int n2)的方法。
尝试解决问题:适配器模式似乎具有我正在寻找的功能,但我只看到接口中的方法没有输入或输出参数的示例。我为这个问题编写的一个示例实现发布在下面。
问题类比:您有一个随机图片生成器 Web 服务。有30个突变可以应用于图像。客户端连接并单击“生成”按钮,其中一些函数的随机列表被传递给Web服务中的某个其他类,然后该类继续使用自己的数据运行这些函数,同时还收集并可能重用返回值以生成一些突变的cat图像。它不能只是显式调用另一个类中的方法,因为该过程需要在运行时随机完成。这就是为什么我倾向于生成一个随机方法列表的想法,这些方法在单击“生成”按钮时按顺序执行。
我希望我已经说清楚了。
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;
}
}