机器人场景 - java继承,接口类型和抽象类

时间:2015-01-15 10:56:21

标签: java inheritance interface abstract-class implements

我想基于机器人场景创建一个程序,包括抽象类,接口类型和数组列表。谁能给我一些关于如何创建这个场景的建议(通过UML图来显示所有链接)。这种情况需要包含一些复杂的方法,但我不确定作为复杂方法做什么或将它们放在场景中的位置。提前谢谢。

1 个答案:

答案 0 :(得分:2)

编程世界在很大程度上是从复杂的继承层次结构转移而来的,而不是embraced compositiondependency injection。我建议你将单片服务分解为小(1-5方法)接口。这有一个额外的好处,即单元测试变得轻而易举,因为你可以使用mockito或类似的模拟出依赖项。

例如:

public interface Walkable {
    void walk(Robot robot, int paces);
}

public interface Talkable {
    void talk(Robot robot, String phrase);
}

public interface Robot {
    void walk(int paces);
    void talk(String phrase);
}

public class RobotImpl implements Robot {
    private final Walkable walkable;
    private final Talkable talkable;

    public RobotImpl(Walkable w, Talkable t) {
        this.walkable = w;
        this.talkable = t;
    }

    public void walk(int paces) {
        walkable.walk(this, paces);
    }

    public void talk(String phrase) {
        talkable.talk(this, phrase);
    }
}