Esempio n. 1
0
        public static void Run()
        {
            AnimalFactory factory = new CatFactory();
            IAnimal       gato    = factory.CreateAnimal();

            gato.Speak();
            gato.Action();

            AnimalFactory factory2 = new DogFactory();
            IAnimal       dog      = factory2.CreateAnimal();

            dog.Speak();
            dog.Action();

            AnimalFactoryWithReflexcion reflex = new AnimalFactoryWithReflexcion();

            Console.WriteLine("AHORRANDOSE LOS FACTORY INDIVIDUALES");
            var tipo = AnimalFactoryWithReflexcion.GetAnimal(typeof(Dog));

            tipo.Speak();

            var strTipo       = typeof(Cat).FullName;
            var factoryReflex = new AnimalFactoryWithReflexcion();
            var tipo2         = factoryReflex.GetAnimal(strTipo);

            tipo2.Speak();
        }
Esempio n. 2
0
        public IAnimal MakeAnimal()
        {
            IAnimal Animal = CreateAnimal();

            Animal.Speak();
            Animal.Action();
            return(Animal);
        }
Esempio n. 3
0
        public IAnimal MakeAnimal()
        {
            Console.WriteLine("\n IAnimalFactory.MakeAnimal()-You cannot ignore parent rules.");
            IAnimal animal = CreateAnimal();

            animal.Speak();
            animal.Action();
            return(animal);
        }
Esempio n. 4
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();
        }
Esempio n. 5
0
        public IAnimal MakeAnimal()
        {
            Console.WriteLine("*** You cannot ignore the Parent Rules  ****");

            IAnimal animal = CreateAnimal();

            animal.Speak();
            animal.Action();

            return(animal);
        }
Esempio n. 6
0
        public IAnimal MakeAnimal()
        {
            Console.WriteLine("Making animal depending of the subclasses! - Factory Method Working!");
            // It doesn't know if it's going to create a dog or a cat.
            // It will be decided by the subclasses
            IAnimal animal = CreateAnimal();

            animal.Speak();
            animal.Action();

            return(animal);
        }
        static void Main(string[] args)
        {
            IAnimalFactory catFactory = new CatFactory();
            IAnimal        cat        = catFactory.CreateAnimal();

            cat.Speak();
            cat.Action();



            Console.ReadKey();
        }
        public IAnimal MakeAnimal()
        {
            _httpContext.Response.WriteAsync("IAnimalFactory.MakeAnimal()-You cannot ignore parent rules.\n\n");

            /*At this point, it doesn't know whether it will get a Dog or a Tiger. It will be decided by the subclasses
             * i.e.DogFactory or TigerFactory. But it knows that it will Speak and it will have a preferred way of Action.
             */
            IAnimal animal = CreateAnimal();

            animal.Speak();
            animal.Action();
            return(animal);
        }
Esempio n. 9
0
        public static void UseSimpleFactory()
        {
            Console.WriteLine("*** Simple Factory Pattern Demo***\n");
            IAnimal preferredType = null;

            ISimpleFactory simpleFactory = new SimpleFactory();

            preferredType = simpleFactory.CreateAnimal();

            preferredType.Speak();
            preferredType.Action();

            Console.ReadKey();
        }
Esempio n. 10
0
        public IAnimal MakeAnimal()
        {
            Console.WriteLine("AnimalFactory.MakeAnimal()-You cannot ignore parent rules.");

            /*
             * At this point,it doesn't know whether it will get a Dog or a Tiger.
             * It will be decided by the subclasses i.e.DogFactory or TigerFactory.
             * But it knows that it will Speak and it will have a preferred way of Action.
             */
            IAnimal animal = CreateAnimal();

            animal.Speak();
            animal.Action();
            return(animal);
        }
Esempio n. 11
0
        static void Main(string[] args)
        {
            Console.WriteLine("***Factory Pattern Demo***\n");
            IAnimalFactory tigerFactory = new TigerFactory();
            IAnimal        aTiger       = tigerFactory.CreateAnimal();

            aTiger.Speak();
            aTiger.Action();

            IAnimalFactory dogFactory = new DogFactory();
            IAnimal        aDog       = dogFactory.CreateAnimal();

            aDog.Speak();
            aDog.Action();
        }
Esempio n. 12
0
        static void Run()
        {
            IAnimal        preferredType = null;
            ISimpleFactory simpleFactory = new SimpleFactory();

            #region The code region that will vary based on users preference
            preferredType = simpleFactory.CreateAnimal(Console.ReadLine());
            #endregion

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

            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            IAnimalFactory tigerFactory = new TigerFactory();
            IAnimal        aTiger       = tigerFactory.CreateAnimal();

            aTiger.Speak();
            aTiger.Action();


            IAnimalFactory dogFactory = new DogFactory();
            IAnimal        aDog       = dogFactory.CreateAnimal();

            aDog.Speak();
            aDog.Action();

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

            #region The code region that will vary based on users preference
            preferredType = simpleFactory.CreateAnimal();
            #endregion

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

            Console.ReadKey();
        }
Esempio n. 15
0
        static void Main(string[] args)
        {
            Console.WriteLine("***Factory Pattern Demo***\n");
            // Creating a Tiger Factory
            IAnimalFactory tigerFactory = new TigerFactory();
            // Creating a tiger using the Factory Method
            IAnimal aTiger = tigerFactory.CreateAnimal();

            aTiger.Speak();
            aTiger.Action();
            // Creating a DogFactory
            IAnimalFactory dogFactory = new DogFactory();
            // Creating a dog using the Factory Method
            IAnimal aDog = dogFactory.CreateAnimal();

            aDog.Speak();
            aDog.Action();
            Console.ReadKey();
        }
Esempio n. 16
0
        static void Main(string[] args)
        {
            Console.WriteLine("----- Simple Factory Design Pattern -----");
            Console.WriteLine("Factory class: AnimalFactory");
            Console.WriteLine("");

            AnimalFactory Factory        = new AnimalFactory();
            IAnimal       PreferedAnimal = null;

            #region Code that may vary based in user preference
            PreferedAnimal = Factory.CreateAnimal(1);       // Creates a Dog
            //PreferedAnimal = Factory.CreateAnimal(2);    // Creates a Cat
            //IAnimal Snake = Factory.CreateAnimal(3);    // It will throw an exception
            #endregion

            #region Code that is less likely to change.
            PreferedAnimal.Action();
            PreferedAnimal.Speak();
            #endregion

            Console.Read();
        }
Esempio n. 17
0
        static void Main(string[] args)
        {
            /*
             * GOF Defination - Define a Interface for creating a object, but let subclasses decide which class need to be instatiated.
             * The Factory Method Pattern lets a class differ a instantiation to subclass
             */

            Console.WriteLine("***Factory Pattern Demo***\n");
            // Creating a Tiger Factory
            IAnimalFactory tigerFactory = new TigerFactory();
            // Creating a tiger using the Factory Method
            IAnimal aTiger = tigerFactory.CreateAnimal();

            aTiger.Speak();
            aTiger.Action();
            // Creating a DogFactory
            IAnimalFactory dogFactory = new DogFactory();
            // Creating a dog using the Factory Method
            IAnimal aDog = dogFactory.CreateAnimal();

            aDog.Speak();
            aDog.Action();
            Console.ReadKey();
        }
Esempio n. 18
0
        static void Main(string[] args)
        {
            #region Singleton
            //Console.WriteLine("***Singleton Pattern Demo***");
            //Console.WriteLine("Trying to create instance s1.");
            //Singleton s1 = Singleton.Instance;
            //Singleton s2 = Singleton.Instance;
            //if (s1 == s2)
            //{
            //    Console.WriteLine("Only on instance exists.");

            //}
            //else
            //{
            //    Console.WriteLine("Different instances exist.");
            //}
            #endregion

            #region Prototype
            //Console.WriteLine("***Prototype Pattern Demo***\n");
            //BasicCar nano_base = new Nano("Green Nano") { Price = 100000 };
            //BasicCar ford_base = new Ford("Ford Yellow") { Price = 500000 };

            //BasicCar bc1;
            ////Nano
            //bc1 = nano_base.Clone();
            //bc1.Price = nano_base.Price + BasicCar.SetPrice();
            //Console.WriteLine($"Car is:{bc1.ModelName},and it's price is Rs.{bc1.Price}");
            ////Ford
            //bc1 = ford_base.Clone();
            //bc1.Price = ford_base.Price + BasicCar.SetPrice();
            //Console.WriteLine($"Car is:{bc1.ModelName},and it's price is Rs.{bc1.Price}");
            #endregion

            #region BuiderPattern
            //Console.WriteLine("***Builder Pattern Demo***\n");
            //Director director = new Director();
            //IBuilder b1 = new Car("Ford");

            //director.Construct(b1);
            //Product p1 = b1.GetVehicle();
            //p1.Show();
            #endregion

            #region FactoryMethodPattern
            Console.WriteLine("***Factory Pattern Demo***\n");

            //Creating a Tiger Factory
            DesignPattern.FactoryMethodPattern.IAnimalFactory tigerFactory = new TigerFactory();
            //Createing a tiger using the factory method
            IAnimal aTiger = tigerFactory.MakeAnimal();
            //aTiger.Speak();
            //aTiger.Action();

            FactoryMethodPattern.IAnimalFactory dogFactory = new DogFactory();
            IAnimal aDog = dogFactory.CreateAnimal();
            aDog.Speak();
            aDog.Action();
            #endregion

            #region Simple Factory
            //Console.WriteLine("*** Simple Factory Pattern Demo***\n");
            //IAnimal preferredType = null;
            //ISimpleFactory simpleFactory = new SimpleFactory();
            //preferredType = simpleFactory.CreateAnimal();
            //preferredType.Speak();
            //preferredType.Action();
            #endregion

            #region AbstractFactory Pattern
            Console.WriteLine("***Abstract Factory Pattern Demo***");
            DesignPattern.AbstractFactoryPattern.IAnimalFactory wildAnimalFactory = new WildAnimalFactory();
            IDog wildDog = wildAnimalFactory.GetDog();
            wildDog.Speak();
            wildDog.Action();
            ITiger wildTiger = wildAnimalFactory.GetTiger();
            wildTiger.Speak();
            wildTiger.Action();
            Console.WriteLine("below is create pet animal ");
            AbstractFactoryPattern.IAnimalFactory petAnimalFactory = new PetAnimalFactory();
            IDog petDog = petAnimalFactory.GetDog();
            petDog.Speak();
            petDog.Action();
            ITiger petTiger = petAnimalFactory.GetTiger();
            petTiger.Speak();
            petTiger.Action();
            #endregion

            #region Proxy Pattern
            Console.WriteLine("***Proxy Pattern Demo***\n");
            Proxy px = new Proxy();
            px.DoSomeWork();

            ICar car = new ProxyCar(new Driver(15));
            car.DriveCar();
            car = new ProxyCar(new Driver(25));
            car.DriveCar();
            #endregion

            Console.WriteLine("***Decorator pattern Demo...\n");
            ConcreteComponent cc = new ConcreteComponent();


            ConcreteDecoratorEx1 decoratorEx1 = new ConcreteDecoratorEx1(cc);
            //  decoratorEx1.SetTheComponent(cc);
            decoratorEx1.MakeHouse();

            #region Adapter Pattern
            CalculatorAdapter cal = new CalculatorAdapter();
            Triangle          t   = new Triangle(20, 10);
            Console.WriteLine($"Area of Triangle is:{cal.GetArea(t)} Square unit");


            Rect r = new Rect(20, 10);
            Console.WriteLine($"Area of Rectangle is :{r.CalculateAreaOfRectangle()}");
            Triangle t0 = new Triangle(20, 10);
            Console.WriteLine($"Area of Triangle is :{t0.CalculateAreaOfTriangle()} Square unit.");
            RectInterface adapter = new TriangleAdapter(t0);
            Console.WriteLine($"Area of Triangle using the triangle adapter is :{adapter.CalculateAreaOfRectangle()} square unit");
            #endregion

            Console.WriteLine("***Flyweight Pattern Demo***");
            RobotFactory factory = new RobotFactory();
            IRobot       shape   = factory.GetRobotFromFactory("Small");
            shape.Print();
            for (int i = 0; i < 2; i++)
            {
                shape = factory.GetRobotFromFactory("Small");
                shape.Print();
            }
            int NumOfDistinctRobots = factory.TotalObjectsCreated;
            Console.WriteLine($"Now,there has {NumOfDistinctRobots} Robots.");

            Console.WriteLine("***Composite Pattern Demo***");
            CompositeEmployee Principal = new CompositeEmployee("Derily(Principal)", "Planning-Supervising-Managing");
            CompositeEmployee hodMaths  = new CompositeEmployee("Mrs.S.Das(HOD-Maths)", "Maths");
            CompositeEmployee hodCompSc = new CompositeEmployee("Mr. V.Sarcar(HOD-CSE)", "Computer Sc.");

            Employee mathTeacher1 = new Employee("Math Teacher-1", "Maths");
            Employee mathTeacher2 = new Employee("Math Teacher-2", "Maths");

            Employee cseTeacher1 = new Employee("CSE Teacher-1", "Computer Sc.");
            Employee cseTeacher2 = new Employee("CSE Teacher-2", "Computer Sc.");
            Employee cseTeacher3 = new Employee("CSE Teacher-3", "Computer Sc.");

            hodMaths.Add(mathTeacher1);
            hodMaths.Add(mathTeacher2);

            hodCompSc.Add(cseTeacher1);
            hodCompSc.Add(cseTeacher2);
            hodCompSc.Add(cseTeacher3);

            Principal.Add(hodMaths);
            Principal.Add(hodCompSc);

            Console.WriteLine("\n Testing the structure of a Principal object");
            Principal.PrintStructures();

            Console.Read();
        }
Esempio n. 19
0
        static void Main(string[] args)
        {
            //Creational Patterns
            Console.WriteLine("Creational Patterns");
            #region Singleton
            Console.WriteLine("***Singleton Pattern Demo***\n");

            Console.WriteLine("Trying to create instance s1.");
            Singleton s1 = Singleton.Instance;

            Console.WriteLine("Trying to create instance s2.");
            Singleton s2 = Singleton.Instance;

            if (s1 == s2)
            {
                Console.WriteLine("Only one instance exists.");
            }
            else
            {
                Console.WriteLine("Different instances exists.");
            }
            #endregion

            Console.WriteLine("###########################");

            #region Prototype
            Console.WriteLine("***Prototype Pattern Demo***\n");
            //Base or Original
            BasicCar nano_base = new Nano("Green Nano")
            {
                Price = 100000
            };
            BasicCar ford_base = new Ford("FordYellow")
            {
                Price = 500000
            };
            BasicCar bc1;

            //Nano
            bc1       = nano_base.Clone();
            bc1.Price = nano_base.Price + BasicCar.SetPrice();
            Console.WriteLine($"Car is {bc1.ModelName}, and price is {bc1.Price}");

            //Ford
            bc1       = ford_base.Clone();
            bc1.Price = ford_base.Price + BasicCar.SetPrice();
            Console.WriteLine($"Car is {bc1.ModelName}, and price is {bc1.Price}");
            #endregion

            Console.WriteLine("###########################");

            #region Buuilder
            Console.WriteLine("***Builder Pattern Demo***");
            Director director = new Director();

            IBuilder b1 = new Car("Ford");
            IBuilder b2 = new MotorCycle("Honda");

            //Mking Car
            director.Construct(b1);
            Product p1 = b1.GetVehicle();
            p1.Show();

            //Making Motorcycle
            director.Construct(b2);
            Product p2 = b2.GetVehicle();
            p2.Show();
            #endregion

            Console.WriteLine("###########################");

            #region Factory Method Pattern
            Console.WriteLine("***Factory Pattern Demo***\n");

            // Creating a Tiger Factory
            AnimalFactory tigerFactory = new TigerFactory();
            // Creating a tiger using the Factory Method
            IAnimal aTiger = tigerFactory.CreateAnimal();
            aTiger.AboutMe();
            aTiger.Action();

            // Creating a DogFactory
            AnimalFactory dogFactory = new DogFactory();
            // Creating a dog using the Factory Method
            IAnimal aDog = dogFactory.CreateAnimal();
            aDog.AboutMe();
            aDog.Action();
            #endregion

            Console.WriteLine("###########################");

            #region Abstract Factory Pattern

            Console.WriteLine("***Abstract Factory Pattern Demo***\n");
            //Making a wild dog through WildAnimalFactory
            IAnimalFactory wildAnimalFactory = new WildAnimalFactory();
            IDog           wildDog           = wildAnimalFactory.GetDog();

            wildDog.Speak();
            wildDog.Action();
            //Making a wild tiger through WildAnimalFactory
            ITiger wildTiger = wildAnimalFactory.GetTiger();
            wildTiger.Speak();
            wildTiger.Action();
            Console.WriteLine("******************");
            //Making a pet dog through PetAnimalFactory
            IAnimalFactory petAnimalFactory = new PetAnimalFactory();
            IDog           petDog           = petAnimalFactory.GetDog();
            petDog.Speak();
            petDog.Action();
            //Making a pet tiger through PetAnimalFactory
            ITiger petTiger = petAnimalFactory.GetTiger();
            petTiger.Speak();
            petTiger.Action();
            #endregion

            Console.WriteLine("###########################");

            //Structural Patterns
            Console.WriteLine("Structural Patterns");

            #region Proxy Pattern
            Console.WriteLine("***Proxy Pattern Demo***");
            Proxy px = new Proxy();
            px.DoSomeWork();
            #endregion

            Console.WriteLine("###########################");

            #region Decorator Pattern
            Console.WriteLine("***Decorator Pattern Simulation***");
            ConcreteComponent cc = new ConcreteComponent();

            ConcreteDecoratorEx1 decorator1 = new ConcreteDecoratorEx1();
            decorator1.SetTheComponent(cc);
            decorator1.MakeHouse();

            ConcreteDecoratorEx2 decorator2 = new ConcreteDecoratorEx2();
            //Adding results from decorator1
            decorator2.SetTheComponent(decorator1);
            decorator2.MakeHouse();
            #endregion

            Console.WriteLine("###########################");

            #region Adapter Pattern

            Console.WriteLine("***Adapter Pattern Demo***\n");
            CalculatorAdapter cal = new CalculatorAdapter();
            Triangle          t   = new Triangle(20, 10);
            Console.WriteLine($"Area of Triangle is {cal.GetArea(t)} square unit");

            #endregion

            Console.WriteLine("###########################");

            #region Facade Pattern

            Console.WriteLine("***Facade Pattern Demo***");
            RobotFacade robotFacade1 = new RobotFacade(); // Creating Robots
            robotFacade1.ConstructMilanoRobot();

            RobotFacade robotFacade2 = new RobotFacade(); // Creating Robots
            robotFacade2.ConstructRobonautRobot();

            robotFacade1.DestroyMilanoRobot();            //Destroying Robots
            robotFacade2.DestroyRobonautRobot();
            #endregion

            Console.WriteLine("###########################");

            #region Flyweight Pattern
            Console.WriteLine("***Flyweight Pattern Demo***");
            RobotFactory myFactory = new RobotFactory();
            IRobot       shape     = myFactory.GetRobotFromFactory("Small");
            shape.Print();

            //Creating small robots
            for (int i = 0; i < 2; i++)
            {
                shape = myFactory.GetRobotFromFactory("Small");
                shape.Print();
            }

            int numOfDistinctRobots = myFactory.TotalObjectsCreated;
            Console.WriteLine($"Number of distinct robot objects is {numOfDistinctRobots}");

            //Creating large robots
            for (int i = 0; i < 5; i++)
            {
                shape = myFactory.GetRobotFromFactory("Large");
                shape.Print();
            }

            numOfDistinctRobots = myFactory.TotalObjectsCreated;
            Console.WriteLine($"Distinct robot objects created till now {numOfDistinctRobots}");
            #endregion

            Console.WriteLine("###########################");

            #region Composite Pattern
            #region Mathematics department
            Console.WriteLine("***Composite Pattern***");
            //2 Lecturers work in Mathematics department
            Employee mathLecturer1 = new Employee {
                Name = "M. Joy", Dept = "Mathematics", Designation = "Lecturer"
            };
            Employee mathLecturer2 = new Employee {
                Name = "M. Ronny", Dept = "Mathematics", Designation = "Lecturer"
            };

            //The college has Head of Department in Mathematics
            CompositeEmployee hodMaths = new CompositeEmployee {
                Name = "Mrs. S. Das", Dept = "Maths", Designation = "HOD-Maths"
            };

            //Lecturers of Mathematics directly perort to HOD-Maths
            hodMaths.AddEmpployee(mathLecturer1);
            hodMaths.AddEmpployee(mathLecturer2);
            #endregion

            #region Computer Science department
            //3 lecturers work in Computer Sc. department
            Employee cseLecturer1 = new Employee {
                Name = "C. Sam", Dept = "Computer Sciense", Designation = "Lecturer"
            };
            Employee cseLecturer2 = new Employee {
                Name = "C. Jones", Dept = "Computer Sciense", Designation = "Lecturer"
            };
            Employee cseLecturer3 = new Employee {
                Name = "C. Marium", Dept = "Computer Sciense", Designation = "Lecturer"
            };

            //The College has a Head of Department in Computer science
            CompositeEmployee hodCompSc = new CompositeEmployee {
                Name = "Mr. V. Sarcar", Dept = "Computer Sc.", Designation = "HOD-Computer Sc."
            };

            //Lecturers of Computer Sc. directly reports to HOD-CSE
            hodCompSc.AddEmpployee(cseLecturer1);
            hodCompSc.AddEmpployee(cseLecturer2);
            hodCompSc.AddEmpployee(cseLecturer3);
            #endregion

            #region Top level management
            //College Principial
            CompositeEmployee principal = new CompositeEmployee {
                Name = "Dr.S.Som", Dept = "Planning-Supervising-Managing", Designation = "Principal"
            };

            //Mead of Department of Math and Computer Sciense apply to Principal
            principal.AddEmpployee(hodMaths);
            principal.AddEmpployee(hodCompSc);
            #endregion

            Console.WriteLine("Details of a Principal are these: ");
            principal.DisplayDetails();

            Console.WriteLine("Details of HOD object are these: ");
            hodCompSc.DisplayDetails();

            Console.WriteLine("Details of individual employee are these: ");
            mathLecturer1.DisplayDetails();

            //Lecturer leaves
            hodCompSc.RemoveEmployee(cseLecturer2);
            Console.WriteLine("After resignstion there are only these leecturers");
            principal.DisplayDetails();

            #endregion
        }