如何创建一个新类来处理Java中的其他两个类?

时间:2015-07-28 11:18:28

标签: java weka

我有两个名为" J48Tree"和" RandomTree"。它们都是" AbstractTree"的子类。

" J48Tree"和" RandomTree"有一个名为" graph()"的方法," AbstractTree"的其他子类。没有这个方法。

上面的这些分析和graph()方法来自现有的API。所以我不需要重写它们。

现在我想创建一个名为“Visualization”的新类。这堂课可以收到" J48Tree"和" RandomTree"作为遗传输入数据。然后运行他们的" graph()"方法

我试过

public class Visualization  <T super J48Tree>

public class Visualization  <T extends AbstractTree>

但它没有用。

如何解决这个问题?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以查看策略设计模式: http://www.tutorialspoint.com/design_pattern/strategy_pattern.htm

看看你提到的场景,因为行为(方法)需要根据传递的输入对象在运行时决定。

答案 1 :(得分:1)

正如弗洛里安所说,你想创建一个界面 Students.findOne({ _id: data._doc._id }).populate('userId','-password').exec(function (err, data) { if (err) { return res.json({ success: false, exception: err }); } else{ return res.json({ success: true, userData: data }); } }); ,并让GraphableJ48Tree实现它。

RandomTree

然后,您可以通过调用public interface Graphable { void graph(); } public class J48Tree extends AbstractTree implements Graphable { @Override public void graph() { // implementation } } public class RandomTree extends AbstractTree implements Graphable { @Override public void graph() { // implementation } } public class Visualization { private Graphable graphable; public void setGraphable(Graphable graphable) { this.graphable = graphable; } public void graph() { this.graphable.graph(); } } Graphable课程上设置Visualization实施。

修改

根据您的评论,我们了解到您无法使setGraphableJ48Tree实施RandomTree界面(这是您必须修改的课程的唯一变化)。在这种情况下,你应该包装&#39;每个类的实例到另一个类,一个包装器,实现Graphable

Graphable

现在,您首先必须创建一个public interface Graphable { void graph(); } public class J48TreeWrapper implements Graphable { private final J48Tree j48Tree; public J48TreeWrapper(J48Tree j48Tree) { this.j48Tree = j48Tree; } @Override public void graph() { this.j48Tree.graph(); } } public class RandomTreeWrapper implements Graphable { private final RandomTree randomTree; public RandomTreeWrapper(RandomTree andomTree) { this.randomTree = randomTree; } @Override public void graph() { this.randomTree.graph(); } } public class Visualization { private Graphable graphable; public void setGraphable(Graphable graphable) { this.graphable = graphable; } public void graph() { this.graphable.graph(); } } 的实例来包装&#39; J48TreeWrapper,然后您使用它J48Tree(与setGraphable相同)。

RandomTreeWrapper