我有一个抽象类,其中有一些表示形状的继承类,我想测试碰撞。现在,这是我的(Java)代码:
public abstract class Shape {
public abstract boolean collision(Rectangle rectangle);
public abstract boolean collision(Circle circle);
}
public class Rectangle extends Shape {
// implementation of both abstract methods
}
public class Circle extends Shape {
// implementation of both abstract methods
}
我在代码中看到了缺陷:如果我想添加另一个子类,我必须修改每个类,比如Triangle
。更不用说父类必须知道它的所有子节点(如@deceze指出的那样)。
我仍然希望确保每次碰撞都是可能的(Rectangle-Rectangle,Circle-Circle,Rectangle-Circle和Circle-Rectangle,以及Triangle将引入的5个等等)。
我有没有想到的设计模式可以很好地解决这个问题?