static void Main(string[] args)
        {
            /* Factory */
            var bloqueFactory = new GameboyBloqueFactory();
            var monedaFactory = new NintendoDSMonedaFactory();

            // Se pueden crear objetos de diferentes tipos, no se controla que sean dependientes, es decir, no se tienen en cuenta las familias
            var bloque1 = bloqueFactory.CreateItem();
            var moneda1 = monedaFactory.CreateItem();

            /* Abstract Factory */
            Fabrica fabrica = new Fabrica(new GameboyFactory());

            // Podemos cambiar toda la familia de objetos, siemplemente cambiando nuestra inyección de factory
            fabrica = new Fabrica(new NintendoDSFactory());

            // Los dos objetos son de la misma familia y no se conoce su clase concreta, se trabaja mucho el polimorfismo
            IMoneda             moneda = fabrica.CrearMoneda();
            IBloqueInterrogante bloque = fabrica.CrearBloqueInterrogante();
        }
Exemple #2
0
 public Notebook ProducirNotebook(Fabrica f)
 {
     return(f.CrearNotebook());
 }
Exemple #3
0
 public Celular ProducirCelular(Fabrica f)
 {
     return(f.CrearCelular());
 }
 private void RbMontana_Checked(object sender, RoutedEventArgs e)
 {
     _fabrica = new FabricaMontana();
 }
 private void RbCarrera_Checked(object sender, RoutedEventArgs e)
 {
     _fabrica = new FabricaCarrera();
 }
 private void RbCiudad_Checked(object sender, RoutedEventArgs e)
 {
     _fabrica = new FabricaCiudad();
 }
 private void Grid_Loaded(object sender, RoutedEventArgs e)
 {
     _fabrica = new FabricaCiudad();
 }