コード例 #1
0
        /*Intenção: definir uma interface para criar um objeto, mas é a suas subclasses que decidem qual classe vão instanciar.
         * permite uma classe adiar a instaciação para subclasses.
         *
         * Descrição:O padrão pode ser aplicado quando uma classe não é capaz de saber antecipadamente quais objetos devem realmente ser criados, quando uma classe repassa(delega)
         * para suas subclasses a responsabilidades de quais objetos realmentem devem ser criados
         *
         * Participantes:
         * Product - define a interface de objetos que o método de fabrica cria.
         * Concrete Product - inplementa a interface Product
         * Creator - Declara o método de fabrica, o qual retorna um objeto do tipo Product. Creator tambem pode definir uma implementação por omissão do método factory que retorna por
         * omissão um objeto Concrete Product.
         * Concrete Creator - redefine o método fabrica para retornar uma instância de um Concrete Product.
         */

        public void FactoryMethod()
        {
            Creator[] creators = new Creator[2];
            creators[0] = new FacebookCreator();
            creators[1] = new GoogleCreator();

            foreach (Creator c in creators)
            {
                Autenticacao aut = c.CreateInstance();
                Response.Write("<br>" + aut.Autenticar());
            }
        }
コード例 #2
0
        public void DoAuthentication(AuthenticatorType authenticatorType)
        {
            Creator creator = null;

            switch (authenticatorType)
            {
            case AuthenticatorType.Google:
                creator = new GoogleCreator();
                break;

            case AuthenticatorType.Facebook:
                creator = new FacebookCreator();
                break;
            }

            Authenticator authenticator = creator.CreateInstance();

            authenticator.DoAuthentication();
        }
コード例 #3
0
        /// <summary>
        /// Client
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            #region Abstract Factory
            Console.WriteLine("Abstract Factory initialize");

            //Step 1
            SqlCommand   cmd = new SqlCommand();
            SqlConection cnn = new SqlConection();
            cmd.Execute();

            //Apply Abstract Factory pattern
            DbFactory db  = new OracleFactory();
            var       con = db.createConnection();
            con.Open();
            var command = db.createCommand();
            command.Execute();

            Console.WriteLine("Abstract Factory finalize" + Environment.NewLine);
            #endregion

            #region Builder
            Console.WriteLine("Builder initialize");

            //Step 1
            var car = new Auto("Car");
            car["gear"]  = "127c";
            car["doors"] = "4";
            car["tires"] = "4";
            car.Show();
            Console.ReadLine();

            var bike = new Auto("bike");
            bike["gear"]  = "50c";
            bike["doors"] = "0";
            bike["tires"] = "2";
            bike.Show();
            Console.ReadLine();

            //Apply Builder pattern
            AutoBuilder builder;
            var         director = new Director();

            builder = new CarBuilder();
            director.Construct(builder);
            builder.Auto.Show();

            builder = new BikeBuilder();
            director.Construct(builder);
            builder.Auto.Show();

            Console.WriteLine("Builder finalize" + Environment.NewLine);
            #endregion

            #region Factory
            Console.WriteLine("Factory Method Initialize");

            //Step 1
            var login = new AuthGoogle();
            login.Authorize();
            Console.ReadLine();

            //Apply Factory
            Creator[] creators = new Creator[2];
            creators[0] = new FacebookCreator();
            creators[1] = new GoogleCreator();

            foreach (Creator c in creators)
            {
                Auth aut = c.CreateInstance(); //Factory Method
                aut.Authorize();
            }
            Console.ReadLine();

            Console.WriteLine("Factory Finalize" + Environment.NewLine);
            #endregion

            #region Prototype
            Console.WriteLine("Prototype initialize");
            Book p1 = new Book(1, "Design Patterns - Book", 20.00);
            Book c1 = (Book)p1.Clone();
            Console.WriteLine(c1.Description);

            DVD p2 = new DVD(2, "Design Patterns - DVD", 25.00);
            DVD c2 = (DVD)p2.Clone();
            Console.WriteLine(c2.Description);
            Console.WriteLine("Prototype Finalize" + Environment.NewLine);
            Console.ReadKey();
            #endregion

            #region Singleton
            Console.WriteLine("Singleton Initialize");
            var con1 = ConnectionBD.Instance();
            con1.stringConexao = "SQLServer";
            con1.Open();
            var con2 = ConnectionBD.Instance();
            con2.stringConexao = "Oracle";
            con2.Open();

            if (con1.Equals(con2))
            {
                Console.WriteLine("Equals Instances");
            }

            Console.WriteLine("Singleton Finalize" + Environment.NewLine);
            Console.ReadKey();
            #endregion
        }