static void Main(string[] args) { //// Factory Pattern //// //FordFiestaFactory factory = new FordFiestaFactory(); //Car whiteFiesta = factory.CreateACar("White"); //Car blackFiesta = factory.CreateACar("Black"); //Console.WriteLine("Make: {0} \nModel: {1} \nColor: {2}", whiteFiesta.Make, whiteFiesta.Model, whiteFiesta.Color); //Console.ReadLine(); //// Observer Pattern //// //YouTubeChannel devCodeCampChannel = new YouTubeChannel(); //ISubscriber Heinisch = new User("Heinisch"); //ISubscriber Jakuwbowski = new User("Jakubowski"); //ISubscriber Terrill = new Moderator("Terrill"); //devCodeCampChannel.Subscribe(Heinisch); //devCodeCampChannel.Subscribe(Jakuwbowski); //devCodeCampChannel.Subscribe(Terrill); //devCodeCampChannel.Upload(); //devCodeCampChannel.Unsubscribe(Heinisch); //devCodeCampChannel.Upload(); //Console.ReadKey(); ////Facade Pattern //// //PizzaFacade organizedRestaurant = new PizzaFacade("BBQ", "Onions", "Gouda"); //organizedRestaurant.MakePizza(); //Dough dough = new Dough(); //Sauce sauce = new Sauce("Tomato"); //FacadePattern.Topping greenPepper = new FacadePattern.Topping("Green Peppers"); //Cheese mozzarella = new Cheese("Mozzarella"); //Oven oven = new Oven(); //PizzaFacade unorganizedRestaurant = new PizzaFacade("Tomato", "Green Peppers", "Mozzarella"); //dough.AddSauce(sauce); //dough.AddCheese(mozzarella); //dough.AddTopping(greenPepper); //oven.SetTemperature(425); //oven.SetTimer(20); //oven.Cook(dough); //Console.ReadLine(); //// Composite Pattern //// Worker Matt = new Worker("Matt", "Worker", 80); Supervisor Angela = new Supervisor("Angela", "CFO", 90); Supervisor Mike = new Supervisor("Mike", "CEO", 100); Supervisor Tory = new Supervisor("Tory", "Head of Marketing", 90); Worker Steve = new Worker("Steve", "Worker", 85); Angela.AddEmployee(Matt); //Matt works for Angela Mike.AddEmployee(Angela); //Angela works for Mike Mike.AddEmployee(Tory); //Tory works for Mike Tory.AddEmployee(Steve); //Steve works for Tory Mike.DisplayStatus(); Console.ReadLine(); //// Dependency Injection //// //DeepDish deepDish = new DeepDish(); //StuffedCrust stuffedCrust = new StuffedCrust(); //ThinCrust thin = new ThinCrust(); //Pizzeria pizzeria = new Pizzeria(stuffedCrust); //pizzeria.AddFood(); //pizzeria.PrepareFood(); //PowerSupply electric = new PowerSupply(10); //CoffeeMaker coffeeMaker = new CoffeeMaker(electric); //coffeeMaker.Use(); //// Proxy Pattern //// //ComponentPriceProxy componentPriceProxy = new ComponentPriceProxy(); //componentPriceProxy.RunProxy(); ////Server Software of Proxy Pattern //var ip = IPAddress.Parse("127.0.0.1"); //var listener = new TcpListener(ip, 8080); //while (true) //{ // listener.Start(); // Console.WriteLine("Waiting for a connection..."); // using (var socket = listener.AcceptSocket()) // { // Console.WriteLine("Client Connected."); // var data = new byte[15]; // socket.Receive(data); // var input = Encoding.Default.GetString(data).TrimEnd('\0'); // Console.WriteLine("Clinet Requested: {0}", input); // var prices = new StoredComponentPrices(); // var price = 0m; // switch (input) // { // case "cpu": // price = prices.CpuPrice; // break; // case "ram": // price = prices.RamPrice; // break; // case "ssd": // price = prices.SsdPrice; // break; // } // var responseValue = Convert.ToString(price); // var response = Encoding.Default.GetBytes(responseValue); // socket.Send(response); // Console.WriteLine("Response sent to Client: {0}", responseValue); // Console.WriteLine(""); // } // listener.Stop(); //} //// Decorator Pattern //// //IceCream chocolateIceCream = new Chocolate(); //chocolateIceCream = new Sprinkle(chocolateIceCream); //chocolateIceCream = new Fudge(chocolateIceCream); //Console.WriteLine(chocolateIceCream.Cost()); //Console.ReadKey(); Console.ReadLine(); }