Exemplo n.º 1
0
        /// <summary>
        /// Motivation
        ///     Object Creation logic is too convoluted
        ///     Constructor is not descriptive
        ///         Name mandated by name of containing type
        ///         Cannnot overload constructor
        ///         Optional parameter hell
        ///     Object creation is non-piecwise
        ///         Outsourced to
        ///             a seperate function (Factory Method)
        ///             Exist in seperate class (Factory)
        ///             Create hierarchy of factories with Abstract Factory
        /// </summary>

        static void Main(string[] args)
        {
            var machine = new HotDrinkMachine();
            var drink   = machine.MakeDrink();

            drink.Consume();
        }
Exemplo n.º 2
0
        // change to Main to run.
        public static void Main(string[] args)
        {
            var machine = new HotDrinkMachine();
            var drink   = machine.MakeDrink();

            drink.Consume();
            //var drink = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Tea, 100);
            //drink.Consume();
        }
Exemplo n.º 3
0
        static void RunAbstractFactory()
        {
            var machine = new HotDrinkMachine();

            machine.MakeDrink();
            //method that violates OCP
            //   var drink = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Tea, 20);
            //   drink.Consume();

            //method using reflection
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            var point = Point.Factory.NewPolarPoint(1.0, Math.PI / 2);

            Console.WriteLine(point);

            /*Foo x = await Foo.CreateAsync();*/

            var machine = new HotDrinkMachine();
            /*var drink = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Tea, 100);*/
            /*drink.Consume();*/

            var drink = machine.MakeDrink();

            drink.Consume();
        }
Exemplo n.º 5
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World from Factories Project!");
            #region ConcreteFactoryClient
            //var point = Point.NewPolarPoint(1.0, Math.PI / 2);
            //var point = Point.Factory.NewPolarPoint(1.0, Math.PI / 2);
            //var point = Point.Factory.NewPolarPoint(1.0, Math.PI / 2);
            //Console.WriteLine(point);
            #endregion

            #region AbstractFactoryClient
            var machine = new HotDrinkMachine();
            //var drink = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Tea, 100);
            //drink.Consume();
            var drink = machine.MakeDrink();
            drink.Consume();
            #endregion
        }
        static async Task Main(string[] args)
        {
            var point  = Point.Factory.NewCartisianPoint(5.5, 4.3);
            var ppoint = Point.Factory.NewPolarPoint(1.0, Math.PI / 2);

            Console.WriteLine($"Cartesian point: {point.ToString()}");
            Console.WriteLine($"Polar point: {ppoint.ToString()}");

            Console.WriteLine("Async factory usage:");

            var asc = await AsynchronusFactory.CreateAsyncObject();

            Console.WriteLine("Abstract Factory");

            var machine = new HotDrinkMachine();

            machine.MakeDrink();
        }