Ok, supongamos que tengo una clase, X y X es algo que tiene una relación total con otros objetos. Vamos a pretender que X es un estadio de fútbol.¿Es esta una mala programación de OO? Pasando esto a través de los métodos
X está lleno de espectadores de clase. Sin embargo, el comportamiento de cada espectador para una actividad particular difiere. En lugar de las declaraciones IF, quiero que el comportamiento diferente esté dentro de la clase del espectador, de modo que pueda usar el enlace dinámico.
Sin embargo, el problema es que el comportamiento del espectador afecta la clase de "estadio de fútbol". Entonces, ¿estaba pensando en pasar "esto" de la clase del estadio de fútbol, a través de un método, a la clase Spectator, para que la clase de espectadores pueda hacer algo en la clase de Soccer Stadium?
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();
}
}
Yo sólo quiero hacer esto para que pueda utilizar el enlace dinámico y alterar el comportamiento en Specator.doSomething()
para que pueda tener un montón de diferentes tipos de SpectatorSuperClass como un atributo pasado al SoccerStadium y luego tener el comportamiento diferente.
EDITAR: ¿Qué sucede si paso la referencia del estadio al Specator a través del constructor de Spectator, en lugar de pasar this
?
Creo que los puristas se avergonzarán con esa técnica debido al acoplamiento apretado, pero parece ser ampliamente utilizado. Un enfoque "mejor" podría ser crear una interfaz que implemente el estadio que defina lo que una entidad externa puede hacerle y aceptar el estadio como ese tipo de interfaz en su clase de espectador. – itsme86
¿Cómo afecta exactamente el specator al estadio de fútbol? Me parece que es un punto clave para determinar el mejor tipo de relación aquí. –
@Esteban, lógica muy simple, establecimiento de atributos a valores. Nada pesado – user997112