Creo que la respuesta que está buscando es un "patrón singleton". Aquí es donde creas solo una instancia de una clase para usar en otros lugares. Aquí hay un good link to read. Aquí está el wikipedia page on it con algunos ejemplos de Java.
lo que el código podría ser algo como esto:
public class A {
private final static A instance = new A();
/* private constructor forces you to use the getInstance() method below */
private A() {}
public static A getInstance() {
return instance;
}
}
Entonces dondequiera que usted desee obtener una instancia de A que haría algo como:
public class B {
private final A classA = ClassA.getInstance();
...
}
No hay ninguna razón por la A
podía tampoco tiene una instancia de B
y llama a los métodos de B
en sus propios métodos. Lo que no puede hacer con esta dependencia cruzada es llamar a cualquiera de los métodos del otro en el constructor.
En general, por cierto, estos patrones se deben usar con moderación. Una mejor manera de lograr esto es a través de la inyección de dependencia en lugar de referencias globales. La inyección cruzada es posible pero, una vez más, debe usarse con moderación. Una mejor solución sería refactorizar las clases para tener dependencias lineales.
¿Hay algún concepto en Java que haga referencia al objeto real (como un puntero) al objeto como una variable en lugar de hacer una copia del objeto?
Java es paso por valor, pero el valor de cualquier objeto es la referencia al objeto (similar a los punteros en C aunque son no una dirección de memoria). Por lo tanto, si tiene una instancia de A
y la asigna a otro campo, ese campo tendrá el mismo valor y hará referencia a la misma instancia de A
.
// instantiate a new instance of A
A a1 = new A();
// assign the reference to A to another variable
a2 = a1;
// they are equivalent and both reference the same object
if (a1 == a2) ...
Hablar de mal diseño .. – mre
(ObPlead: Por favor, no use estática mutable (anteriormente conocida como globales). Y eso incluye el uso del antipatrón singleton.) –