// Constructor de la remera // Hace uso de la factoría para obtener (o generar, en caso de que no exista) la parte implícita de // los datos de la remera (modelo, talle y color) public Remera(string modelo, string talle, string color, // Datos implícitos int dniComprador, DateTime fechaDeCompra, int edad) // Datos explícitos { // Instanciamos o referenciamos los datos implícitos a través de la factoría this.datosImplicitos = RemeraFactory.GetRemera(modelo, talle, color); // Asignamos los datos propios, exclusivos de este objeto DniComprador = dniComprador; FechaDeCompra = fechaDeCompra; Edad = edad; }
public static ModeloRemera GetRemera(string modelo, string talle, string color) { ModeloRemera v = null; // Si el modelo ya ha sido creado anteriormente, se recupera del pool if (pool.ContainsKey(modelo + " " + talle + " " + color)) { v = pool[modelo + " " + talle + " " + color]; Console.WriteLine("\t* Recuperando del pool la remera " + modelo + " " + talle + " " + color); } else { v = new ModeloRemera(modelo, talle, color); // Se añade el objeto al pool: las sucesivas llamadas usarán este objeto en lugar de // instanciar uno nuevo pool.Add(modelo + " " + talle + " " + color, v); } Console.WriteLine("\t* Insertando en el pool la remera " + modelo + " " + talle + " " + color); return(v); }