Java继承方法

问题描述 投票:0回答:1

我对如何实现以下情况感到非常困惑。我想这样做:

  1. Integer getScore(String string)

    • ATypology
    • BTypology
  2. boolean isComplete(POJO pojo)

    • ATypology
    • BTypology
    • CTypeology

考虑此:

public class ATypology extends TypologyScore {

    @Override
    public Integer getScoreByWords(Integer integer) { return 0; }

    @Override
    public boolean execute(POJO pojo) { /* */ }

}
public class BTypology extends TypologyScore {

    @Override
    public Integer getScoreByWords(Integer integer) { return 1; }

    @Override
    public boolean execute(POJO pojo) { /* */ }

}
public class CTypology extends TypologyOperation {

    @Override
    public Integer countWords(String string) { return 0; }

    @Override
    public boolean execute(POJO pojo) { /* */ }

}
public abstract class TypologyScore extends TypologyOperation {

    public Integer getScore(String string) {
        /* ... */
        return this.getScoreByWords(integer);
    }

    // template method
    public abstract Integer getScoreByWords(Integer integer);

}
public abstract class TypologyOperation {

    public abstract Integer getScore(String string);

    public boolean isComplete(POJO pojo) { return this.execute(pojo); }

    // template method
    public abstract boolean execute(POJO pojo);

}
public class POJO { 

    public Integer getScore() { return typologyOperation.getScore(string); }

    public boolean isComplete() { return typologyOperation.isComplete(this); }

}

问题是在CTypology类中,我需要实现public Integer countWords(String string),但我不想要它,因为它永远不会使用它。有什么办法可以解决这个问题,也许是像访问者模式这样的设计模式?

如果是这样,结构会是什么样?谢谢。

java design-patterns multiple-inheritance
1个回答
0
投票

您可以使用接口代替抽象类,并查看SOLID原则。就您而言-接口隔离。

© www.soinside.com 2019 - 2024. All rights reserved.