public CAdminPrototipos() { //Adicionamos los objetos prototips con los valores iniciales que nos interesan CPersona persona = new CPersona("Ciudadano", 18); prototipos.Add("Persona", persona); //Instanciamos el rendimiento costoso para guardarlo en el administrador con el estado inicial CValores valores = new CValores(1); prototipos.Add("Valores", valores); }
public static void _Main() //representa al cliente en el UML { //Creamos Administrador, lo primero q tenemos q hacer CAdminPrototipos admin = new CAdminPrototipos(); //obtenemos dos instancias CPersona uno = (CPersona)admin.ObtenPrototipo("Persona"); CPersona dos = (CPersona)admin.ObtenPrototipo("Persona"); //Verificamos que tengan los valores del prototipo original Console.WriteLine(uno); Console.WriteLine(dos); Console.WriteLine("--------------"); //Modificamos el estado, cada uno db d tener su propia instancia uno.Nombre = "Ana"; dos.Nombre = "Chepe"; //Verificamos q cada qien tenga su estado Console.WriteLine(uno); Console.WriteLine(dos); Console.WriteLine("--------------"); //Creamos una instancia CAuto auto = new CAuto("Nissan", 250000); //Lo Colocamos como prototipo admin.AdicionaPrototipo("Auto", auto); //Obtenemos un objeto de ese prototipo CAuto auto2 = (CAuto)admin.ObtenPrototipo("Auto"); //Cambiamos el estado auto2.Modelo = "Honda"; //Verificamos que tengan los valores del prototipo original Console.WriteLine(auto); Console.WriteLine(auto2); Console.WriteLine("--------------"); //Obtenemos una instancia de la clase con rendimiento costoso, simplemente obtenemos un clon con la instancia inicial y asi no c recalcula CValores val = (CValores)admin.ObtenPrototipo("Valores"); Console.WriteLine(val); }