【发布时间】:2015-03-13 18:03:48
【问题描述】:
我想创建一个基于机器人场景的程序,包括抽象类、接口类型和数组列表。谁能给我一些关于如何创建这个场景的建议(通过 UML 图显示所有内容如何链接)。这个场景需要包含一些复杂的方法,但是我不确定作为一个复杂的方法应该做什么或者将它们放在场景中的什么位置。提前致谢。
【问题讨论】:
标签: java inheritance interface abstract-class implements
我想创建一个基于机器人场景的程序,包括抽象类、接口类型和数组列表。谁能给我一些关于如何创建这个场景的建议(通过 UML 图显示所有内容如何链接)。这个场景需要包含一些复杂的方法,但是我不确定作为一个复杂的方法应该做什么或者将它们放在场景中的什么位置。提前致谢。
【问题讨论】:
标签: java inheritance interface abstract-class implements
编程世界在很大程度上已经从复杂的继承层次结构转向embraced composition 和dependency 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);
}
}
【讨论】: