【发布时间】:2014-06-27 06:05:31
【问题描述】:
我猜这是某种设计模式问题。
我想将几个操作(输入 + 处理逻辑 + 输出)建模为实现一些 IOperation 接口的类。
每个操作可能有不同的输入参数和不同的输出参数。
我可以使用每个操作的构造函数为每个操作指定不同的输入。
但我也希望以正交方式为每个类获得不同的输出,而不必将接口转换为具体类。
对此的明显方法是 [1] 转换为具体类并调用返回所需结果的特定方法或 [2] 将结果包装到某个 OperationResult 对象中,这反过来也需要向下转换或一些元数据信息 + 提取器代码。
我想避免处理反射或向下转换或元数据解释。
在 Java 中是否有针对这种情况的已知设计?对此有什么好的方法?
更新 - @Laf,这里有一些具体的例子。我想提取“c”
interface IOperation{
void execute();
}
public class AddOp implements IOperation{
private int a;
private int b;
private int c;
public AddOp(int a, int b){
this.a = a;
this.b = b;
}
@Override
public void execute() {
this.c = this.a + this.b;
}
}
public class AndOp implements IOperation{
private boolean a;
private boolean b;
private boolean c;
public AndOp(boolean a, boolean b){
this.a = a;
this.b = b;
}
@Override
public void execute() {
this.c = this.a && this.b;
}
}
【问题讨论】:
-
你考虑过使用泛型吗?
-
听起来不错。 @Laf 你对泛型的方法是什么?
-
回答 Noor,这是真的,但如果我在此接口中没有针对每种不同类型结果的方法,我将不得不将其向下转换为具体实现。 (-1 不是我 - 我不会对自己的问题答案投反对票)
-
如果没有您提供的任何代码示例,很难编写出完全符合您需求的解决方案。但是如果你有一个接口
InputParameter<String,V>,其中第一个参数是名称,第二个参数是任何类的值,那么它可能会解决你的问题。 -
@Laf 提供示例
标签: java design-patterns