通过此方法好吧,假设我有一个类,X和X是与其他对象具有聚合关系的东西。让我们假装X是一个足球场。这是不好的面向对象编程吗?通过方法
X充满了观众。然而,每个观众对于特定活动的行为都不相同。而不是IF语句,我希望不同的行为在观众类中,以便我可以使用动态绑定。
然而,问题是观众进行的行为会影响“足球场”类。所以我想通过一种方法将足球体育场的“这个”传递给观众班,这样观众班可以为足球体育场做些什么?
public class SoccerStadium{
SpecatorInterface s = new Spectator();
public void SpectatorBehaviour(){
s.doSomething(this);
}
public void doSomethingthingBySpecator(){
}
}
public class Spectator implements SpecatorInterface{
public void doSomething(SoccerStadium s){
s.doSomethingthingBySpecator();
}
}
我只是想这样做,这样我可以使用动态绑定和改变Specator.doSomething()
的行为,这样我可以有很多不同类型的SpectatorSuperClass的传递给SoccerStadium属性,然后有不同的行为。
编辑:如果我通过Spectator构造函数传递给Specator的体育场的参考而不是通过this
?
我相信纯粹主义者会因为紧密的耦合而对这种技术产生畏缩,但它似乎被广泛使用。 “更好”的方法可能是创建一个体育场实现的接口,它定义了外部实体可以对它做些什么,并接受体育场作为观众类中的接口类型。 – itsme86 2012-07-09 23:26:36
这位投机分子如何影响足球场?在我看来,这是确定这里最佳关系类型的关键。 – 2012-07-09 23:45:17
@Esteban,非常简单的逻辑,将属性设置为值。没有什么重用 – user997112 2012-07-10 00:19:28