コード例 #1
0
        static void RunAbstractFactoryWithOCP()
        {
            HotDrinkMachineOCP machine  = new HotDrinkMachineOCP();
            IHotDrink          hotDrink = machine.MakeDrink();

            hotDrink.Consume();
        }
コード例 #2
0
        void main()
        {
            var       HotDrinkMachine = new HotDrinkMachine();
            IHotDrink mydrink         = HotDrinkMachine.MakeDrink(0, 100);

            mydrink.Consume();
        }
コード例 #3
0
        public AbstractFactoryDemo2()
        {
            var       machine = new HotDrinkMachine();
            IHotDrink drink   = machine.MakeDrink();

            drink.Consume();
        }
コード例 #4
0
        public IHotDrink CreateDrink()
        {
            IHotDrink Coffee = DrinkFactory.CreateHotDrink(Program.AvailableDrink.Coffee);

            Console.WriteLine("----------------------------------------------------");
            Console.WriteLine("Do you want milk in your drink? ");
            Console.WriteLine("----------------------------------------------------");
            Console.WriteLine("1.Yes\n2.No ");
            Console.WriteLine("----------------------------------------------------");

            Console.Write("please input your answer: ");
            string answer = Console.ReadLine().ToLower();

            bool confirmed = Coffee.ConfirmPayment(Coffee);

            if (confirmed)
            {
                if (answer.Equals("yes"))
                {
                    IHotDrink coffeeWithMilk = new MilkyDrinkDecorator(Coffee);
                    coffeeWithMilk.Prepare();
                }
                else
                {
                    Coffee.Prepare();
                }
            }
            else
            {
                Console.Clear();
                Console.WriteLine("Incorrect payment, try again.");
            }
            Console.Clear();
            return(Coffee);
        }
コード例 #5
0
        public static void Run()
        {
            var       machine = new HotDrinkMachine();
            IHotDrink drink   = machine.MakeDrink();

            drink.Consume();
        }
コード例 #6
0
        static void RunAbstractFactory()
        {
            HotDrinkMachine machine = new HotDrinkMachine();
            IHotDrink       drink   = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Tea, 100);

            drink.Consume();
        }
コード例 #7
0
        public void Init()
        {
            var       machine = new HotDrinkMachine();
            IHotDrink drink   = machine.MakeDrink();

            drink.Consume();
        }
コード例 #8
0
        static void Main(string[] args)
        {
            var machine = new HotDrinkMachine();

            IHotDrink drink = machine.MakeDrink();

            drink.Consume();
        }
コード例 #9
0
        static void Main(string[] args)
        {
            var machine = new HotDrinkMachine();
            //var drink = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Tea, 300);
            //drink.Consume();

            IHotDrink drink = machine.MakeDrink();

            drink.Consume();
        }
コード例 #10
0
ファイル: Caller.cs プロジェクト: Vikuska/DesignPatterns
        public static void AbstractClass()
        {
            var machine = new HotDrinkMachine();
            //var drink = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Tea, 300);
            //drink.Consume();

            IHotDrink drink = machine.MakeDrink();

            drink.Consume();
        }
コード例 #11
0
        public static void CreateFactory()
        {
            var machine = new HotDrinkMachine();
            //var drink = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Tea, 300);
            //drink.Consume();

            IHotDrink drink = machine.MakeDrink();

            drink.Consume();
        }
コード例 #12
0
 public void PrintPaymentDetails(IHotDrink drink)
 {
     Console.Clear();
     Console.WriteLine("----------------------------------------------------");
     Console.WriteLine("Your drink details are below :");
     Console.WriteLine("Drink Type: {0}\nDrink Size: {1}\nDrink Price: {2} DKK",
                       drink.GetDrinkName, drink.GetDrinkSize, drink.GetDrinkPrice);
     Console.WriteLine("----------------------------------------------------");
     Console.WriteLine("To pay for the drink please insert coins.");
     Console.WriteLine("----------------------------------------------------");
     Console.Write("Insert Coin:");
 }
コード例 #13
0
ファイル: MobilePay.cs プロジェクト: DonatasAd/VendingMachine
 public void PrintPaymentDetails(IHotDrink drink)
 {
     Console.Clear();
     Console.WriteLine("----------------------------------------------------");
     Console.WriteLine("Your drink details are below :");
     Console.WriteLine("Drink Type: {0}\nDrink Size: {1}\nDrink Price: {2} DKK",
                       drink.GetDrinkName, drink.GetDrinkSize, drink.GetDrinkPrice);
     Console.WriteLine("----------------------------------------------------");
     Console.WriteLine("To pay for the drink you need to transfer money to MobilePay acount - 123456");
     Console.WriteLine("----------------------------------------------------");
     Console.Write("Enter transaction id to confirm your payment:");
 }
コード例 #14
0
        public static void Start()
        {
            var machine = new HotDrinkMachine();

            //// first version
            //var drink = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Tea, 300);
            //drink.Consume();

            IHotDrink drink = machine.MakeDrink();

            drink.Consume();
        }
コード例 #15
0
        static void Main(string[] args)
        {
            var machine = new HotDrinkMachine();
            //var drink = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Tea, 300);
            //drink.Consume();

            IHotDrink drink = machine.MakeDrink();

            drink.Consume();

            Console.WriteLine("Hello World!");
            Console.ReadKey();
        }
コード例 #16
0
        static void Main(string[] args)
        {
            var machine = new HotDrinkMachine();

            //Calls for commented code
            //var drink = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Tea, 2);
            //drink.Consume();
            //var secondDrink = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Coffee, 5);
            //secondDrink.Consume();

            IHotDrink drink = machine.MakeDrink();

            drink.Consume();
        }
コード例 #17
0
    // Use this for initialization
    void Start()
    {
        HotDrinkMachine machine = new HotDrinkMachine();

        IHotDrink drink  = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Tea, 120);
        IHotDrink drink2 = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Coffee, 500);

        drink.Consume();

        drink2.Consume();

        Debug.Log(Enum.GetName(typeof(HotDrinkMachine.AvailableDrink), 0));
        Debug.Log(Enum.GetName(typeof(HotDrinkMachine.AvailableDrink), 1));
    }
コード例 #18
0
        static void Main(string[] args)
        {
            //Calling Abstract Factory Class In main
            var machine = new HotDrinkMachine();
            //var drink = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Tea, 300);
            //drink.Consume();

            IHotDrink drink = machine.MakeDrink();

            drink.Consume();

            //var pointCartesian = Point.Factory.NewCartesianPoint(2.0, 3.0);
            //var pointPolar = Point.Factory.NewPolarPoint(1.0, Math.PI / 2);
            //Console.WriteLine(pointPolar);
        }
コード例 #19
0
        static void Main(string[] args)
        {
            // // approch 1 use
            //HotDrinkMachine hotDrinkMachine = new HotDrinkMachine();
            //var coffee = hotDrinkMachine.MakeDrink(HotDrinkMachine.AvaliableDrink.Coffee, 500);
            //coffee.Consume();



            // // approach 2
            HotDrinkMachine hotDrinkMachine = new HotDrinkMachine();
            IHotDrink       hotDrink        = hotDrinkMachine.MakeDrink();

            hotDrink.Consume();

            Console.WriteLine("Hello World!");
        }
コード例 #20
0
        public IHotDrink CreateDrink()
        {
            IHotDrink Latte     = DrinkFactory.CreateHotDrink(Program.AvailableDrink.Latte);
            bool      confirmed = Latte.ConfirmPayment(Latte);

            if (confirmed)
            {
                Latte.Prepare();
            }
            else
            {
                Console.Clear();
                Console.WriteLine("Incorrect payment, try again.");
            }
            Console.Clear();
            return(Latte);
        }
コード例 #21
0
        static void Main(string[] args)
        {
            //var p1 = new Point(2, 3, Point.CoordinateSystem.Cartesian);
            //var origin = Point.Origin;

            //var p2 = Point.Factory.NewCartesianPoint(1, 2);

            // ABSTRACT FACTORY
            var machine = new HotDrinkMachine();
            //var drink = machine.MakeDrink(HotDrinkMachine.AvailableDrink.Tea, 300);
            //drink.Consume();

            IHotDrink drink = machine.MakeDrink();

            drink.Consume();

            Console.ReadLine();
        }
コード例 #22
0
 public void PrintPaymentDetails(IHotDrink drink)
 {
     _mobilePay.PrintPaymentDetails(drink);
 }
コード例 #23
0
        //Please UnComment Each Code Block To Test A Particular Pattern !
        static void Main(string[] args)
        {
            #region Open Closed Principle And Specification Pattern
            //Product apple = new Product("Apple", Color.Red, Size.Medium);
            //Product tree = new Product("Tree",Color.Green,Size.Large);
            //Product house = new Product("House", Color.Blue , Size.Large);

            //Product[] products = {apple, tree, house};


            ////old
            ////  ProductFilter pf = new ProductFilter();

            ////  Console.WriteLine("Large Products (old):");

            ////foreach (var p in pf.FilterBySize(products, Size.Large))
            ////{
            ////    Console.WriteLine(p.Name);
            ////}
            ////    Console.WriteLine("Green Products (old):");
            ////new

            //IFilter<Product> filter = new SmartFilter();

            //Console.WriteLine("Green Products (new):");
            //foreach (var p in filter.Filter(products,new ColorSpecification(Color.Green)))
            //{
            //    Console.WriteLine($"{p.Name} is {p.Color}");
            //}

            //Console.WriteLine("Large Products (new):");
            //foreach (var p in filter.Filter(products, new SizeSpecification(Size.Large)))
            //{
            //    Console.WriteLine($"{p.Name} is {p.Size}");
            //}


            ////color and size
            //foreach (var p in filter.Filter(products,
            //    new AndSpecification<Product>(new ColorSpecification(Color.Blue),new SizeSpecification(Size.Large) )))
            //{
            //    Console.WriteLine($"{p.Name} Size is {p.Size} And Color Is {p.Color}");
            //}
            #endregion


            #region Builder and simple fluent api Pattern
            // var words = new[] { "Hello", "World" };

            //Without Builder

            //var hello = "Hello";

            //var sp = new StringBuilder();

            //sp.Append("<p>");
            //sp.Append(hello);
            //sp.Append("</p>");
            //WriteLine(sp);

            //sp.Clear();
            //sp.Append("<ul>");

            //foreach (var item in words)
            //{
            //    sp.Append($"<li>{item}</li>");
            //}
            //sp.Append("<ul/>");

            //WriteLine(sp);

            //With Builder

            // HtmlBuilder htmlBuilder = new HtmlBuilder("ul", string.Empty);

            //Without Fluent Api (Builder)
            //foreach (var text in words)
            //{
            //    htmlBuilder.AddChild("li", text);

            //}

            //With Fluent Api (Builder) (returning an instance of the method Class)

            //htmlBuilder.AddChild("li", "Hello").AddChild("li","World");

            //WriteLine(htmlBuilder);
            #endregion

            #region Fluent Builder Inhertiance With Recursive Generics

            // PersonJobBuilder personBuilder = new PersonJobBuilder();

            //WorksAsA() doesn't exist because the instance returned from called method
            //is for the base class which doesn't know anything about child classes methods

            //  WriteLine(personBuilder.Called("Mohamed Elhabbab").WorksAsA());

            // WriteLine(personBuilder.Called("Mohamed").WorksAsA("Software Developer"));

            //var person = Person
            //                   .Instance
            //                   .Called("Mohamed")
            //                   .WorksAsA("Software Developer")
            //                   .Build();

            //CodeBuilder codeBuilder = new CodeBuilder("Person");

            //codeBuilder
            //    .AddField("Name", "string")
            //    .AddField("Age","int");



            //WriteLine(codeBuilder);
            #endregion

            #region Facated Builder For Employee

            //EmployeeBuilder empBuilder = new EmployeeBuilder();

            //Employee emp = empBuilder
            //    .Address
            //    .SetAddress("160 , 26 july St")
            //    .SetCity("Giza")
            //    .SetPostCode("12654")
            //    .Employement
            //    .WorksAt("ARPUPLUS")
            //    .WorksAs("Software Developer")
            //    .SetAnnualSalary(500000);

            //WriteLine(emp);

            #endregion

            #region Factory

            //1-Factory Method

            //Point p = PointFactory.NewPolarPoint(1.0, Math.PI / 2);
            //WriteLine(p);


            //Inner Factory

            //Shape square = Shape.Factory.MakeSquare();
            //WriteLine(square.shapeType);

            //Shape triangle = Shape.Factory.MakeTriangle(45);
            //WriteLine(triangle.shapeType);

            //Shape polygon = Shape.Factory.MakePolygon(6, 45);
            //WriteLine(polygon.shapeType);

            //Abstract Factory

            //Steps :-
            //1:- Build IHotDrink Interface And Implement It Using Available Drinks

            //2:- Build IHotDrinkFactory Interface And Implement It Using Drinks Factories

            //3:- Build HotDrinkMachineClass To Store The Mapping Between Drinks And Its Factories
            //Using The Reflection Then Return The Right DrinkFactory To Be Used .

            //HotDrinkMachine hotDrinkMachine = new HotDrinkMachine();
            //IHotDrink coffee = hotDrinkMachine.MakeDrink(AvailableDrinks.Coffee, 250);

            //coffee.Consume();

            HotDrinkMachine_OCP hotDrinkMachine = new HotDrinkMachine_OCP();
            IHotDrink           coffee          = hotDrinkMachine.MakeDrink();
            #endregion

            Console.Read();
        }