我的问题如下:

我们有一个内部可使用的算法


具有“ String getContent()”方法的表达式对象
使用“表达式操作(表达式e)”方法对表达式进行操纵的操纵器对象


这将成为Java中的框架。
为了解决一个实际的问题,需要给出一个具体的实现
Expression和Manipulator都将完成,其余的将由Algorithm类完成。

假设我们需要一个ProblemExpression和ProblemManipulator
针对特定问题。

ProblemExpression可能包含许多新字段,
可以由ProblemManipulator使用。

现在,我只能想到两种编写干净代码的方法:


让ProblemManipulator.manipulate假设其参数为ProblemExpressions
使用instanceOf


但是我感觉这不是我应该怎么做。
还有其他建议吗?

致以诚挚的谢意,

Xaero。

最佳答案

听起来您应该使用泛型。喜欢

interface Manipulator<E extends Expression> {
    public void manipulate(E expression);
}

class ProblemManipulator implements Manipulator<ProblemExpression> {
    public void manipulate(ProblemExpression expression) {
        // expression is a ProblemExpression
    }
}

10-06 13:58