none
Creación de clase que almacene instancia de otros tipo de objetos RRS feed

  • Pregunta

  • Hola

    Tengo la duda siguiente, sucede que tengo unas clases (aproximadamente son 10) y cada una tiene una función muy particular, pero para que cada una de ellas puedan operar necesitan de 4 instancias de otras cuatro clase que tengo, así que mi pregunta es: ¿Es correcto que cree una clase para que almacene instancias de diferentes tipo? y así creo únicamente una instancia para todas y evitar sobrecargar el constructor.

    Así es como lo tengo actualmente:
    class X1 {}, class X2 {}, class X3 {}, class X4 {}

    class A1 { 
        private X1 x1;
        private X2 x2;
        private X3 x3;
        private X4 x4;
        public A1(X1 x1, X2 x2, X3 x3, X4 x4)
        {
             this.x1 = x1; 
             this.x2 = x2;
             this.x3 = x3;
             this.x4 = x4;
        }
    }
    .
    .
    .
    class A10 { 
        private X1 x1;
        private X2 x2;
        private X3 x3;
        private X4 x4;
        public A10(X1 x1, X2 x2, X3 x3, X4 x4)
        {
             this.x1 = x1; 
             this.x2 = x2;
             this.x3 = x3;
             this.x4 = x4;
        }
    }

    X1 x1 = new X1();
    X2 x2 = new X2();X3 x3 = new X3();
    X4 x4 = new X4();A1 a1 = new A1(x1, x2, x3, x4);
    ...
    A10 a10 = new A10(x1, x2, x3, x4);

    Es correcto tenerlo de la siguiente forma:

    class Instancias
    {
          // Sirve para crear instancias de X1, ..., X4
    }

    La instancia que se crea de la clase 'Instancias' es la que se utilizaría para las clases A1, ..., A10
    Ejemplo:
    Instance i = new Instance();
    A1 a1 = new A1(i);
    .
    .
    .
    A10 a10 = new A10(i);

    Espero me puedan ayudar, o si me pueden proponer alguna otra solución
    De antemano gracias.


    Raul LB

    viernes, 29 de marzo de 2019 3:13

Respuestas

  • Sí, es lícito crear una clase como la que estás haciendo. Pero si este problema se te presenta con frecuencia (tienes clases que para funcionar necesitan instancias de otras clases) te recomiendo que instales algún paquete que gestione la inyección de dependencias, tal como AutoFac o Ninject o alguno similar. Esto requiere primero superar una curva de aprendizaje hasta que aprendas cómo se usa, pero después te automatiza la creación de las instancias que se necesite, incluso cuando sean complejas (una clase que depende de otra la cual depende de otra, etc). En resumidas cuentas, ese paquete se comporta internamente como si fuese esa "clase que almacena instancias" que tú estás construyendo, pero tiene la "inteligencia" necesaria para solo crear las instancias que se necesiten en cada momento.
    • Propuesto como respuesta Sergio ParraModerator viernes, 29 de marzo de 2019 7:16
    • Marcado como respuesta Raul2011 viernes, 29 de marzo de 2019 12:20
    viernes, 29 de marzo de 2019 7:00
    Moderador