我有这个 Java 接口:
public interface Box {
public void open();
public void close();
}
这个接口由这个类扩展:
public class RedBox implements Box {
public void open() {
}
public void close() {
}
}
问题是我希望将来添加其他也将实现 Box 接口的类。这些新类将有自己的方法,例如其中一个类将有一个 putInBox() 方法,但是如果我将 putInBox() 方法添加到 Box 接口,我也将被迫添加一个空的 putInBox() 实现) 方法添加到之前实现 Box 接口的类,如上面的 RedBox 类。
我将 putInBox() 添加到 Box 接口,因为有一个类 Caller 采用实现 Box 接口的类的对象,例如:
public class Caller {
private Box box;
private int command;
public Caller(Box b) {
this.box = b;
}
public void setCommandID(int id) {
this.command = id;
}
public void call() {
if(command == 1) {
box.open();
}
if(command == 2) {
box.close();
}
// more commands here...
}
}
Caller c = new Caller(new RedBox());
c.call();
如何在新类中实现 Box 接口,而不会被迫将新方法的空实现添加到以前实现 Box 接口的每个类中。