예제 #1
0
        public void CreateProduct_Creator2_MustCreateProduct2()
        {
            var      creator2 = new ConcreteCreator2();
            IProduct product  = creator2.Create();

            Assert.True(product is ConcreteProduct2);
        }
예제 #2
0
        static public void Main()
        {
            ConcreteCreator1 factory1 = new ConcreteCreator1();
            ConcreteCreator2 factory2 = new ConcreteCreator2();

            factory1.FactorMethod();
            factory2.FactorMethod();
        }
        public void get_product_2()
        {
            var creator = new ConcreteCreator2();

            var product = creator.FactoryMethod();

            Assert.That(product.GetValue() == ProductTypes.ValueProduct2);
        }
예제 #4
0
        static void Main(string[] args)
        {
            Console.WriteLine("-----------Adapter--------------");
            #region Adapter

            SpecificClass specific = new SpecificClass();
            ICommon       common   = new Adaptee(specific);

            Console.WriteLine(common.Method());

            #endregion

            Console.WriteLine("-----------Factory--------------");
            #region Factory

            Creator[] creators = new Creator[2];
            creators[0] = new ConcreteCreator1();
            creators[1] = new ConcreteCreator2();

            foreach (Creator creator in creators)
            {
                Product product = creator.FactoryMethod();
                Console.WriteLine("Created {0}", product.GetType().Name);
            }

            #endregion

            Console.WriteLine("-----------Strategy--------------");
            #region Strategy

            Context context = new Context(new ConcreteStrategy1());
            context.ExecuteOperation();

            context.SetStrategy(new ConcreteStrategy2());
            context.ExecuteOperation();

            #endregion

            Console.WriteLine("-----------Singleton--------------");
            #region Singleton

            Singleton singleton1 = Singleton.GetInstance();
            Singleton singleton2 = Singleton.GetInstance();

            if (singleton1 == singleton2)
            {
                Console.WriteLine("Singleton works, there are same objects.");
                singleton1.DoLogic();
                singleton2.DoLogic();
            }
            else
            {
                Console.WriteLine("Singleton incorrect");
                singleton1.DoLogic();
                singleton2.DoLogic();
            }
            #endregion
        }
예제 #5
0
        static void Main(string[] args)
        {
            CreateSection("Singletons");

            Singleton s1 = Singleton.Instance();
            Singleton s2 = Singleton.Instance();

            if (s1 == s2)
            {
                Console.WriteLine("Objects are the same instance.");
            }
            EndSection();

            CreateSection("Prototypes");

            var p1 = new ConcretePrototype1(1);

            Console.WriteLine("Original ID: {0}", p1.Id);

            var c1 = (ConcretePrototype1)p1.Clone();

            Console.WriteLine("Cloned ID: {0}", c1.Id);

            EndSection();

            CreateSection("Factory");

            var creators = new Creator[2];

            creators[0] = new ConcreteCreator();
            creators[1] = new ConcreteCreator2();

            foreach (Creator creator in creators)
            {
                Product product = creator.FactoryMethod();

                Console.WriteLine("Created {0}", product.GetType().Name);
            }

            EndSection();

            CreateSection("Observer pattern");

            var bookSubject = new BookSubject("Gone Girl", "True Crime");

            bookSubject.Attach(new ConcreteObserver("The Librarian"));

            bookSubject.SubjectType = "Horror";
            bookSubject.SubjectType = "Romance";

            Console.ReadKey();
        }