Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            // Проблема:
            // SimpleProduct sproduct = new SimpleProduct();
            // sproduct.DoSomething();

            // Если по каким-либо причинам, SimpleProduct изменится, то придётся менять все обращения к SimpleProduct по всему проекту.
            // В данном примере вызов один, но вдруг их будет 20? Каждый раз менять 20 мест?
            // К тому же жизненный цикл даного объекта контролируется на клиенте.
            // ...
            // Не стоит так делать, создадим отдельный класс для формирования продукта
            Factory simpleFactory = new SimpleFactory();

            // Создадим продукт с помощью фабричного метода
            AbstractProduct aproduct = simpleFactory.CreateProduct(ProductType.ProductA);

            aproduct.DoSomething();

            AbstractProduct bproduct = simpleFactory.CreateProduct(ProductType.ProductB);

            bproduct.DoSomething();

            AbstractProduct nproduct = simpleFactory.CreateProduct(ProductType.ProductN);

            nproduct.DoSomething();

            // Вуаля, подробности создания объекта скрыты
            Console.ReadLine();
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            // Get a ProductA
            var productA = SimpleFactory.CreateProduct("A");

            // Get a ProductB
            var productB = SimpleFactory.CreateProduct("B");
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            Parent parent = null;

            parent = SimpleFactory.Create(ChildType.A);
            parent = SimpleFactory.Create(ChildType.B);
            parent = SimpleFactory.Create(ChildType.C);
            Console.ReadKey();
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            // Simple Factory
            var classType = SimpleFactory.GetClassType("Class1");

            classType.DoSomething();
            classType = SimpleFactory.GetClassType("Class2");
            classType.DoSomething();
        }
Ejemplo n.º 5
0
        public static SimpleFactory GetInstance()
        {
            if (simpleFactory != null)
            {
                simpleFactory = new SimpleFactory();
            }

            return(simpleFactory);
        }
Ejemplo n.º 6
0
        static void Main(string[] args)
        {
            Console.WriteLine("***Simple Factory Pattern Demo***\n");
            IAnimal        preferredType = null;
            ISimpleFactory simpleFactory = new SimpleFactory();

            preferredType = simpleFactory.CreateAnimal();
            preferredType.Speak();
            preferredType.Action();
        }
Ejemplo n.º 7
0
        private static void Main(string[] args)
        {
            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }
            AbstractOperation abstractOperation = SimpleFactory.GetOperation("+");

            abstractOperation.Number1 = 2;
            abstractOperation.Number2 = 4;
            Console.WriteLine(abstractOperation.GetResult());
            Console.ReadKey();
        }
Ejemplo n.º 8
0
        static void Main(string[] args)
        {
            Laptop laptop = SimpleFactory.NewLaptop("Ideapad");

            MobilePhone phone = SimpleFactory.NewMobilePhone("Galaxy");

            Televisor televisor = SimpleFactory.NewTelevisor("LG");

            Console.WriteLine(laptop.GetBrand());
            Console.WriteLine(phone.GetBrand());
            Console.WriteLine(televisor.GetBrand());

            Console.ReadKey();
        }
Ejemplo n.º 9
0
        static void Main(string[] args)
        {
            SchoolUser user = null;

            user = SimpleFactory.GetSchoolUser("Patercia", "Patercia");

            Console.WriteLine("校长登陆");

            user.Show();

            user = SimpleFactory.GetSchoolUser("Teacher", "Teacher");
            Console.WriteLine("教师登陆");
            user.Show();

            Console.ReadKey();
        }
Ejemplo n.º 10
0
        static void Main(string[] args)
        {
            Console.WriteLine("*** Simple Factory Pattern Demo.***\n");
            IAnimal       preferredType = null;
            SimpleFactory simpleFactory = new SimpleFactory();

            #region The code region that can vary based on users preference.

            /*
             * Since this part may vary,we're moving the
             * part to CreateAnimal() in SimpleFactory class.
             */
            preferredType = simpleFactory.CreateAnimal();
            #endregion

            #region The codes that do not change frequently.
            preferredType.AboutMe();
            #endregion

            Console.ReadKey();
        }
Ejemplo n.º 11
0
        public void Demo1()
        {
            IProduct product = SimpleFactory.CreateProduct(nameof(ConcreteProductC));

            Contract.Assert(product.GetType() == typeof(ConcreteProductC));
        }
Ejemplo n.º 12
0
 public void SetFactory(SimpleFactory factory)
 {
     this.factory = factory;
 }
Ejemplo n.º 13
0
 public Order(SimpleFactory simpleFactory)
 {
     SetFactory(simpleFactory);
 }