diff --git a/AdapterPattern/AdapterPattern.csproj b/AdapterPattern/AdapterPattern.csproj index ce1697a..74abf5c 100644 --- a/AdapterPattern/AdapterPattern.csproj +++ b/AdapterPattern/AdapterPattern.csproj @@ -2,7 +2,9 @@ Exe - netcoreapp2.0 + net6.0 + enable + enable diff --git a/AdapterPattern/MallardDuck.cs b/AdapterPattern/MallardDuck.cs index 24c1ede..b0602cf 100644 --- a/AdapterPattern/MallardDuck.cs +++ b/AdapterPattern/MallardDuck.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace AdapterPattern { diff --git a/AdapterPattern/Program.cs b/AdapterPattern/Program.cs index 3a159fd..cb46974 100644 --- a/AdapterPattern/Program.cs +++ b/AdapterPattern/Program.cs @@ -1,4 +1,5 @@ -namespace AdapterPattern + +namespace AdapterPattern { internal static class Program { diff --git a/AdapterPattern/TurkeyAdapter.cs b/AdapterPattern/TurkeyAdapter.cs index 708eae1..adf13e0 100644 --- a/AdapterPattern/TurkeyAdapter.cs +++ b/AdapterPattern/TurkeyAdapter.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; namespace AdapterPattern { diff --git a/AdapterPattern/WildTurkey.cs b/AdapterPattern/WildTurkey.cs index 2e79fa7..b6e04ac 100644 --- a/AdapterPattern/WildTurkey.cs +++ b/AdapterPattern/WildTurkey.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace AdapterPattern { diff --git a/BridgePattern/BridgePattern.csproj b/BridgePattern/BridgePattern.csproj index 51b7f6c..74abf5c 100644 --- a/BridgePattern/BridgePattern.csproj +++ b/BridgePattern/BridgePattern.csproj @@ -1,8 +1,10 @@ - - Exe - netcoreapp2.1 - + + Exe + net6.0 + enable + enable + diff --git a/BridgePattern/FlyingEnchantment.cs b/BridgePattern/FlyingEnchantment.cs index 4678965..4aa5b38 100644 --- a/BridgePattern/FlyingEnchantment.cs +++ b/BridgePattern/FlyingEnchantment.cs @@ -2,7 +2,7 @@ namespace BridgePattern { - public class FlyingEnchantment:IEnchantment + public class FlyingEnchantment : IEnchantment { public void OnActivate() { diff --git a/BridgePattern/Hammer.cs b/BridgePattern/Hammer.cs index 99a2786..55e6782 100644 --- a/BridgePattern/Hammer.cs +++ b/BridgePattern/Hammer.cs @@ -2,7 +2,7 @@ namespace BridgePattern { - public class Hammer:IWeapon + public class Hammer : IWeapon { private readonly IEnchantment _enchantment; public Hammer(IEnchantment enchantment) diff --git a/BridgePattern/Program.cs b/BridgePattern/Program.cs index 2ee4591..c07d035 100644 --- a/BridgePattern/Program.cs +++ b/BridgePattern/Program.cs @@ -8,7 +8,7 @@ private static void Main() sword.Wield(); sword.Swing(); sword.Unwield(); - + IWeapon hammer = new Hammer(new SoulEatingEnchantment()); hammer.Wield(); hammer.Swing(); diff --git a/BridgePattern/SoulEatingEnchantment.cs b/BridgePattern/SoulEatingEnchantment.cs index 6b8d36d..dfb9b8a 100644 --- a/BridgePattern/SoulEatingEnchantment.cs +++ b/BridgePattern/SoulEatingEnchantment.cs @@ -2,7 +2,7 @@ namespace BridgePattern { - public class SoulEatingEnchantment:IEnchantment + public class SoulEatingEnchantment : IEnchantment { public void OnActivate() { diff --git a/BridgePattern/Sword.cs b/BridgePattern/Sword.cs index 2145b4b..23198d5 100644 --- a/BridgePattern/Sword.cs +++ b/BridgePattern/Sword.cs @@ -2,7 +2,7 @@ namespace BridgePattern { - public class Sword:IWeapon + public class Sword : IWeapon { private readonly IEnchantment _enchantment; diff --git a/BuilderPattern/BuilderPattern.csproj b/BuilderPattern/BuilderPattern.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/BuilderPattern/BuilderPattern.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/BuilderPattern/Cook.cs b/BuilderPattern/Cook.cs new file mode 100644 index 0000000..980bb3d --- /dev/null +++ b/BuilderPattern/Cook.cs @@ -0,0 +1,32 @@ +namespace BuilderPattern +{ + + // This class can also be called the Director + public class Cook + { + private IBuilder _builder; + public Cook(IBuilder builder) + { + AcceptBuilder(builder); + } + + public void ChangeBuilder(IBuilder builder) + { + AcceptBuilder(builder); + } + + public Hamburger Build() + { + _builder.AddIngredients(); + _builder.AddShape(); + _builder.AddSize(); + return _builder.Build(); + } + + private void AcceptBuilder(IBuilder builder) + { + _builder = builder; + _builder.Reset(); + } + } +} diff --git a/BuilderPattern/Hamburger.cs b/BuilderPattern/Hamburger.cs new file mode 100644 index 0000000..68ec0f6 --- /dev/null +++ b/BuilderPattern/Hamburger.cs @@ -0,0 +1,19 @@ + +namespace BuilderPattern +{ + public class Hamburger + { + public int Size { get; set; } + public string Shape { get; set; } + public string[] Ingredients { get; set; } + public override string ToString() + { + var hamburger = ""; + foreach (var ingredient in Ingredients) + { + hamburger += $"{ingredient} "; + } + return $"Ingredients: {hamburger}, Size: {Size}, Shape: {Shape}"; + } + } +} diff --git a/BuilderPattern/IBuilder.cs b/BuilderPattern/IBuilder.cs new file mode 100644 index 0000000..2730841 --- /dev/null +++ b/BuilderPattern/IBuilder.cs @@ -0,0 +1,11 @@ +namespace BuilderPattern +{ + public interface IBuilder + { + void AddIngredients(); + void AddShape(); + void AddSize(); + void Reset(); + Hamburger Build(); + } +} diff --git a/BuilderPattern/MyHamburgerBuilder.cs b/BuilderPattern/MyHamburgerBuilder.cs new file mode 100644 index 0000000..4ce1cbf --- /dev/null +++ b/BuilderPattern/MyHamburgerBuilder.cs @@ -0,0 +1,31 @@ +namespace BuilderPattern +{ + public class MyHamburgerBuilder : IBuilder + { + private Hamburger _hamburger; + public void AddIngredients() + { + _hamburger.Ingredients = new string[] { "Bread", "Meat", "Tomato", "Salad", "Mayonnaise" }; + } + + public void AddShape() + { + _hamburger.Shape = "Kite"; + } + + public void AddSize() + { + _hamburger.Size = 10; //inches + } + public void Reset() + { + _hamburger = new Hamburger(); + } + + public Hamburger Build() + { + return _hamburger; + } + + } +} diff --git a/BuilderPattern/Program.cs b/BuilderPattern/Program.cs new file mode 100644 index 0000000..dc14219 --- /dev/null +++ b/BuilderPattern/Program.cs @@ -0,0 +1,20 @@ +using System; + +namespace BuilderPattern +{ + class Program + { + static void Main() + { + var builder = new MyHamburgerBuilder(); + var cook = new Cook(builder); + var myHamburger = cook.Build(); + + cook.ChangeBuilder(new WifesHamburgerBuilder()); + var wifesHamburger = cook.Build(); + + Console.WriteLine($"My Hamburger: {myHamburger}"); + Console.WriteLine($"My Wife's Hamburger: {wifesHamburger}"); + } + } +} diff --git a/BuilderPattern/WifesHamburgerBuilder.cs b/BuilderPattern/WifesHamburgerBuilder.cs new file mode 100644 index 0000000..887dcc1 --- /dev/null +++ b/BuilderPattern/WifesHamburgerBuilder.cs @@ -0,0 +1,31 @@ +namespace BuilderPattern +{ + + public class WifesHamburgerBuilder : IBuilder + { + private Hamburger _hamburger; + public void AddIngredients() + { + _hamburger.Ingredients = new string[] { "Bread", "Salad" }; + } + + public void AddShape() + { + _hamburger.Shape = "Cuboid"; + } + + public void AddSize() + { + _hamburger.Size = 6; //inches + } + + public void Reset() + { + _hamburger = new Hamburger(); + } + public Hamburger Build() + { + return _hamburger; + } + } +} diff --git a/ChainOfResponsibilityPattern/AdditionHandler.cs b/ChainOfResponsibilityPattern/AdditionHandler.cs new file mode 100644 index 0000000..27f7bbe --- /dev/null +++ b/ChainOfResponsibilityPattern/AdditionHandler.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace ChainOfResponsibilityPattern { + public class AdditionHandler : BaseHandler { + public override double? Handle(double[] values, string action) { + if (action.ToLower() == "add") { + double result=0.0; + foreach (var value in values) { + result += value; + } + return result; + } + else { + return _nextInLine?.Handle(values,action); + } + } + } +} diff --git a/ChainOfResponsibilityPattern/BaseHandler.cs b/ChainOfResponsibilityPattern/BaseHandler.cs new file mode 100644 index 0000000..b24a593 --- /dev/null +++ b/ChainOfResponsibilityPattern/BaseHandler.cs @@ -0,0 +1,11 @@ +namespace ChainOfResponsibilityPattern { + public abstract class BaseHandler : IHandler { + public void AddChain(IHandler handler) { + _nextInLine = handler; + } + + public abstract double? Handle(double[] values, string action); + + protected IHandler _nextInLine; + } +} diff --git a/ChainOfResponsibilityPattern/ChainOfResponsibilityPattern.csproj b/ChainOfResponsibilityPattern/ChainOfResponsibilityPattern.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/ChainOfResponsibilityPattern/ChainOfResponsibilityPattern.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/ChainOfResponsibilityPattern/IHandler.cs b/ChainOfResponsibilityPattern/IHandler.cs new file mode 100644 index 0000000..f263adb --- /dev/null +++ b/ChainOfResponsibilityPattern/IHandler.cs @@ -0,0 +1,6 @@ +namespace ChainOfResponsibilityPattern { + public interface IHandler { + void AddChain(IHandler handler); + double? Handle(double[] values, string action); + } +} diff --git a/ChainOfResponsibilityPattern/MultiplicationHandler.cs b/ChainOfResponsibilityPattern/MultiplicationHandler.cs new file mode 100644 index 0000000..cf99553 --- /dev/null +++ b/ChainOfResponsibilityPattern/MultiplicationHandler.cs @@ -0,0 +1,16 @@ +namespace ChainOfResponsibilityPattern { + public class MultiplicationHandler : BaseHandler { + public override double? Handle(double[] values, string action) { + if (action.ToLower() == "multiply") { + var result = 1.0; + foreach (var value in values) { + result *= value; + } + return result; + } + else { + return _nextInLine?.Handle(values, action); + } + } + } +} diff --git a/ChainOfResponsibilityPattern/Program.cs b/ChainOfResponsibilityPattern/Program.cs new file mode 100644 index 0000000..2ea5d2d --- /dev/null +++ b/ChainOfResponsibilityPattern/Program.cs @@ -0,0 +1,26 @@ +using System; + +namespace ChainOfResponsibilityPattern { + class Program { + static void Main(string[] args) { + //create handlers + var additionHandler = new AdditionHandler(); + var subtractionHandler = new SubtractionHandler(); + var multiplicationHander = new MultiplicationHandler(); + //create chain + subtractionHandler.AddChain(multiplicationHander); + additionHandler.AddChain(subtractionHandler); + //Execution + double[] numbers = new double[] { 2, 3, 4, 5 }; + var additionResult = additionHandler.Handle(numbers, "Add"); + var subtractionResult = additionHandler.Handle(numbers, "Minus"); + var multResult = additionHandler.Handle(numbers, "Multiply"); + var divisionResult = additionHandler.Handle(numbers, "divide"); // Divide is not in the chain!!! + + Console.WriteLine("Addition = {0}",additionResult); + Console.WriteLine("Subtraction = {0}", subtractionResult); + Console.WriteLine("Multiplication = {0}", multResult); + Console.WriteLine("Division = {0}", divisionResult); + } + } +} diff --git a/ChainOfResponsibilityPattern/SubtractionHandler.cs b/ChainOfResponsibilityPattern/SubtractionHandler.cs new file mode 100644 index 0000000..7a5e5dd --- /dev/null +++ b/ChainOfResponsibilityPattern/SubtractionHandler.cs @@ -0,0 +1,16 @@ +namespace ChainOfResponsibilityPattern { + public class SubtractionHandler : BaseHandler { + public override double? Handle(double[] values, string action) { + if (action.ToLower() == "minus") { + var result = values[0]; + for (int i = 1; i < values.Length; i++) { + result -= values[i]; + } + return result; + } + else { + return _nextInLine?.Handle(values, action); + } + } + } +} diff --git a/CommandPattern/CommandPattern.csproj b/CommandPattern/CommandPattern.csproj index ce1697a..74abf5c 100644 --- a/CommandPattern/CommandPattern.csproj +++ b/CommandPattern/CommandPattern.csproj @@ -2,7 +2,9 @@ Exe - netcoreapp2.0 + net6.0 + enable + enable diff --git a/CommandPattern/Program.cs b/CommandPattern/Program.cs index d12a569..d719ca9 100644 --- a/CommandPattern/Program.cs +++ b/CommandPattern/Program.cs @@ -33,11 +33,11 @@ private static void Main() Console.WriteLine(); var light = new Light("Hall"); - ICommand[] partyOn = {new LightOffCommand(light), bikeDoorOpen, carDoorOpen}; - ICommand[] partyOff = {new LightOnCommand(light), bikeDoorClose, carDoorClose}; + ICommand[] partyOn = { new LightOffCommand(light), bikeDoorOpen, carDoorOpen }; + ICommand[] partyOff = { new LightOnCommand(light), bikeDoorClose, carDoorClose }; - remote[2] = new OnOffStruct {On = new MacroCommand(partyOn), Off = new MacroCommand(partyOff)}; + remote[2] = new OnOffStruct { On = new MacroCommand(partyOn), Off = new MacroCommand(partyOff) }; try { diff --git a/CompositePattern/CompositePattern.csproj b/CompositePattern/CompositePattern.csproj index ce1697a..74abf5c 100644 --- a/CompositePattern/CompositePattern.csproj +++ b/CompositePattern/CompositePattern.csproj @@ -2,7 +2,9 @@ Exe - netcoreapp2.0 + net6.0 + enable + enable diff --git a/CompositePattern/Menu.cs b/CompositePattern/Menu.cs index 5049303..6be36c6 100644 --- a/CompositePattern/Menu.cs +++ b/CompositePattern/Menu.cs @@ -26,7 +26,7 @@ public override void Remove(MenuComponent component) public override MenuComponent GetChild(int i) { - return _components[i]; + return _components[i]; } public override string Name { get; } diff --git a/CompositePattern/MenuComponent.cs b/CompositePattern/MenuComponent.cs index 07c8c03..38928e4 100644 --- a/CompositePattern/MenuComponent.cs +++ b/CompositePattern/MenuComponent.cs @@ -6,7 +6,7 @@ public class MenuComponent { public virtual void Add(MenuComponent component) { - throw new NotImplementedException(); + throw new NotImplementedException(); } public virtual void Remove(MenuComponent component) diff --git a/CompositePattern/MenuItem.cs b/CompositePattern/MenuItem.cs index 50222e8..ab7c2f1 100644 --- a/CompositePattern/MenuItem.cs +++ b/CompositePattern/MenuItem.cs @@ -18,7 +18,7 @@ public MenuItem(string name, string description, double price, bool isveg) public override double Price { get; } - public override bool Vegetarian { get; } + public override bool Vegetarian { get; } public override void Print() { diff --git a/CompositePattern/Program.cs b/CompositePattern/Program.cs index ea24810..1c24613 100644 --- a/CompositePattern/Program.cs +++ b/CompositePattern/Program.cs @@ -7,14 +7,14 @@ public static void Main() var breakfast = new Menu("Breakfast", "Pancake House"); var lunch = new Menu("Lunch", "Deli Diner"); - var dinner = new Menu("Dinner","Dinneroni"); + var dinner = new Menu("Dinner", "Dinneroni"); var dessert = new Menu("Dessert", "Ice Cream"); var menu = new Menu("All", "McDonalds"); - breakfast.Add(new MenuItem("Waffles","Butterscotch waffles",140,false)); - breakfast.Add(new MenuItem("Corn Flakes","Kellogs",80,true)); + breakfast.Add(new MenuItem("Waffles", "Butterscotch waffles", 140, false)); + breakfast.Add(new MenuItem("Corn Flakes", "Kellogs", 80, true)); lunch.Add(new MenuItem("Burger", "Cheese and Onion Burger", 250, true)); lunch.Add(new MenuItem("Sandwich", "Chicken Sandwich", 280, false)); @@ -23,7 +23,7 @@ public static void Main() dinner.Add(new MenuItem("Pasta", "Chicken Pasta", 280, false)); dessert.Add(new MenuItem("Ice Cream", "Vanilla and Chocolate", 120, true)); - dessert.Add(new MenuItem("Cake", "Choclate Cake Slice",180, false)); + dessert.Add(new MenuItem("Cake", "Choclate Cake Slice", 180, false)); dinner.Add(dessert); menu.Add(breakfast); diff --git a/DecoratorPattern/DecoratorPattern.csproj b/DecoratorPattern/DecoratorPattern.csproj index ce1697a..74abf5c 100644 --- a/DecoratorPattern/DecoratorPattern.csproj +++ b/DecoratorPattern/DecoratorPattern.csproj @@ -2,7 +2,9 @@ Exe - netcoreapp2.0 + net6.0 + enable + enable diff --git a/DecoratorPattern/MochaCondiment.cs b/DecoratorPattern/MochaCondiment.cs index ae2b45d..b0e76a5 100644 --- a/DecoratorPattern/MochaCondiment.cs +++ b/DecoratorPattern/MochaCondiment.cs @@ -9,8 +9,9 @@ public MochaCondiment(Beverage beverage) this._beverage = beverage; } - public override string Description { - get + public override string Description + { + get { if (_beverage.Description.StartsWith("Mocha")) { diff --git a/DecoratorPattern/WhipCondiment.cs b/DecoratorPattern/WhipCondiment.cs index 8863b67..550b929 100644 --- a/DecoratorPattern/WhipCondiment.cs +++ b/DecoratorPattern/WhipCondiment.cs @@ -12,7 +12,7 @@ public WhipCondiment(Beverage beverage) public override string Description { get - { + { if (_beverage.Description.StartsWith("Whip")) { return "Double " + _beverage.Description; diff --git a/DesignPatternsDotNetCore.sln b/DesignPatternsDotNetCore.sln index f864d07..3a7677a 100644 --- a/DesignPatternsDotNetCore.sln +++ b/DesignPatternsDotNetCore.sln @@ -1,35 +1,46 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26124.0 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32825.248 MinimumVisualStudioVersion = 15.0.26124.0 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdapterPattern", "AdapterPattern\AdapterPattern.csproj", "{79553F75-E8DC-4988-B511-A79CC6A9CDF7}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdapterPattern", "AdapterPattern\AdapterPattern.csproj", "{79553F75-E8DC-4988-B511-A79CC6A9CDF7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommandPattern", "CommandPattern\CommandPattern.csproj", "{AC6ED373-CE32-41E4-B38A-64B8700E46C9}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CommandPattern", "CommandPattern\CommandPattern.csproj", "{AC6ED373-CE32-41E4-B38A-64B8700E46C9}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CompositePattern", "CompositePattern\CompositePattern.csproj", "{21754CEF-8885-4EED-91AF-73FF2514553D}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CompositePattern", "CompositePattern\CompositePattern.csproj", "{21754CEF-8885-4EED-91AF-73FF2514553D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DecoratorPattern", "DecoratorPattern\DecoratorPattern.csproj", "{5F9D7DA1-FA5E-477C-87D7-2A131C99D090}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DecoratorPattern", "DecoratorPattern\DecoratorPattern.csproj", "{5F9D7DA1-FA5E-477C-87D7-2A131C99D090}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FacadePattern", "FacadePattern\FacadePattern.csproj", "{CCDDFDE2-9958-476C-91DB-9F2907887ADE}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FacadePattern", "FacadePattern\FacadePattern.csproj", "{CCDDFDE2-9958-476C-91DB-9F2907887ADE}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IteratorPattern", "IteratorPattern\IteratorPattern.csproj", "{C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IteratorPattern", "IteratorPattern\IteratorPattern.csproj", "{C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ObserverPattern", "ObserverPattern\ObserverPattern.csproj", "{DDE34459-B244-43F9-8DE2-8D1E70CB6609}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ObserverPattern", "ObserverPattern\ObserverPattern.csproj", "{DDE34459-B244-43F9-8DE2-8D1E70CB6609}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SingletonPattern", "SingletonPattern\SingletonPattern.csproj", "{FA82E572-FC03-4C87-86FA-660AF06AA24A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SingletonPattern", "SingletonPattern\SingletonPattern.csproj", "{FA82E572-FC03-4C87-86FA-660AF06AA24A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StatePattern", "StatePattern\StatePattern.csproj", "{1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StatePattern", "StatePattern\StatePattern.csproj", "{1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StrategyPattern", "StrategyPattern\StrategyPattern.csproj", "{73D240B4-428D-4BC1-BC3C-C14D1D9D806E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StrategyPattern", "StrategyPattern\StrategyPattern.csproj", "{73D240B4-428D-4BC1-BC3C-C14D1D9D806E}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TemplatePattern", "TemplatePattern\TemplatePattern.csproj", "{928CD7B2-BB6E-4E07-834E-67B20CA6D698}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TemplatePattern", "TemplatePattern\TemplatePattern.csproj", "{928CD7B2-BB6E-4E07-834E-67B20CA6D698}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BridgePattern", "BridgePattern\BridgePattern.csproj", "{95E7F42A-74B9-4071-9A3C-86EF95A0EB1B}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BridgePattern", "BridgePattern\BridgePattern.csproj", "{95E7F42A-74B9-4071-9A3C-86EF95A0EB1B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FlyweightPattern", "FlyweightPattern\FlyweightPattern.csproj", "{0067EFC3-FC8D-4F1A-AA92-12323CAD0200}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FlyweightPattern", "FlyweightPattern\FlyweightPattern.csproj", "{0067EFC3-FC8D-4F1A-AA92-12323CAD0200}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisitorPattern", "VisitorPattern\VisitorPattern.csproj", "{871F7BE0-B75F-4F9E-9C4D-CE9C4ECE7A88}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VisitorPattern", "VisitorPattern\VisitorPattern.csproj", "{871F7BE0-B75F-4F9E-9C4D-CE9C4ECE7A88}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FactoryPattern", "FactoryPattern\FactoryPattern.csproj", "{182B58DC-6787-4A09-8BCF-87A96737E5A6}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PrototypePattern", "PrototypePattern\PrototypePattern.csproj", "{2DC00E3D-2099-4C58-B98F-B6B3F285739F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MediatorPattern", "MediatorPattern\MediatorPattern.csproj", "{82A66FF6-5D66-4E39-8FF8-C8EBA0EB3A2D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BuilderPattern", "BuilderPattern\BuilderPattern.csproj", "{274786D8-2E30-40D7-81B5-DFA3872CF9B6}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProxyPattern", "ProxyPattern\ProxyPattern.csproj", "{0F8297F6-FA4F-44B6-BF99-0FF71ECCF87A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SingletonPattern.Tests", "SingletonPattern.Tests\SingletonPattern.Tests.csproj", "{7A21A074-AEBB-4B33-80BA-D7DFBE87A449}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -40,142 +51,139 @@ Global Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Debug|x64.ActiveCfg = Debug|x64 - {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Debug|x64.Build.0 = Debug|x64 - {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Debug|x86.ActiveCfg = Debug|x86 - {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Debug|x86.Build.0 = Debug|x86 + {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Debug|x64.ActiveCfg = Debug|Any CPU + {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Debug|x64.Build.0 = Debug|Any CPU + {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Debug|x86.ActiveCfg = Debug|Any CPU + {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Debug|x86.Build.0 = Debug|Any CPU {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Release|Any CPU.ActiveCfg = Release|Any CPU {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Release|Any CPU.Build.0 = Release|Any CPU - {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Release|x64.ActiveCfg = Release|x64 - {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Release|x64.Build.0 = Release|x64 - {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Release|x86.ActiveCfg = Release|x86 - {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Release|x86.Build.0 = Release|x86 + {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Release|x64.ActiveCfg = Release|Any CPU + {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Release|x64.Build.0 = Release|Any CPU + {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Release|x86.ActiveCfg = Release|Any CPU + {79553F75-E8DC-4988-B511-A79CC6A9CDF7}.Release|x86.Build.0 = Release|Any CPU {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Debug|x64.ActiveCfg = Debug|x64 - {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Debug|x64.Build.0 = Debug|x64 - {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Debug|x86.ActiveCfg = Debug|x86 - {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Debug|x86.Build.0 = Debug|x86 + {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Debug|x64.ActiveCfg = Debug|Any CPU + {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Debug|x64.Build.0 = Debug|Any CPU + {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Debug|x86.ActiveCfg = Debug|Any CPU + {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Debug|x86.Build.0 = Debug|Any CPU {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Release|Any CPU.ActiveCfg = Release|Any CPU {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Release|Any CPU.Build.0 = Release|Any CPU - {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Release|x64.ActiveCfg = Release|x64 - {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Release|x64.Build.0 = Release|x64 - {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Release|x86.ActiveCfg = Release|x86 - {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Release|x86.Build.0 = Release|x86 + {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Release|x64.ActiveCfg = Release|Any CPU + {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Release|x64.Build.0 = Release|Any CPU + {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Release|x86.ActiveCfg = Release|Any CPU + {AC6ED373-CE32-41E4-B38A-64B8700E46C9}.Release|x86.Build.0 = Release|Any CPU {21754CEF-8885-4EED-91AF-73FF2514553D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {21754CEF-8885-4EED-91AF-73FF2514553D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {21754CEF-8885-4EED-91AF-73FF2514553D}.Debug|x64.ActiveCfg = Debug|x64 - {21754CEF-8885-4EED-91AF-73FF2514553D}.Debug|x64.Build.0 = Debug|x64 - {21754CEF-8885-4EED-91AF-73FF2514553D}.Debug|x86.ActiveCfg = Debug|x86 - {21754CEF-8885-4EED-91AF-73FF2514553D}.Debug|x86.Build.0 = Debug|x86 + {21754CEF-8885-4EED-91AF-73FF2514553D}.Debug|x64.ActiveCfg = Debug|Any CPU + {21754CEF-8885-4EED-91AF-73FF2514553D}.Debug|x64.Build.0 = Debug|Any CPU + {21754CEF-8885-4EED-91AF-73FF2514553D}.Debug|x86.ActiveCfg = Debug|Any CPU + {21754CEF-8885-4EED-91AF-73FF2514553D}.Debug|x86.Build.0 = Debug|Any CPU {21754CEF-8885-4EED-91AF-73FF2514553D}.Release|Any CPU.ActiveCfg = Release|Any CPU {21754CEF-8885-4EED-91AF-73FF2514553D}.Release|Any CPU.Build.0 = Release|Any CPU - {21754CEF-8885-4EED-91AF-73FF2514553D}.Release|x64.ActiveCfg = Release|x64 - {21754CEF-8885-4EED-91AF-73FF2514553D}.Release|x64.Build.0 = Release|x64 - {21754CEF-8885-4EED-91AF-73FF2514553D}.Release|x86.ActiveCfg = Release|x86 - {21754CEF-8885-4EED-91AF-73FF2514553D}.Release|x86.Build.0 = Release|x86 + {21754CEF-8885-4EED-91AF-73FF2514553D}.Release|x64.ActiveCfg = Release|Any CPU + {21754CEF-8885-4EED-91AF-73FF2514553D}.Release|x64.Build.0 = Release|Any CPU + {21754CEF-8885-4EED-91AF-73FF2514553D}.Release|x86.ActiveCfg = Release|Any CPU + {21754CEF-8885-4EED-91AF-73FF2514553D}.Release|x86.Build.0 = Release|Any CPU {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Debug|x64.ActiveCfg = Debug|x64 - {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Debug|x64.Build.0 = Debug|x64 - {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Debug|x86.ActiveCfg = Debug|x86 - {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Debug|x86.Build.0 = Debug|x86 + {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Debug|x64.ActiveCfg = Debug|Any CPU + {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Debug|x64.Build.0 = Debug|Any CPU + {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Debug|x86.ActiveCfg = Debug|Any CPU + {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Debug|x86.Build.0 = Debug|Any CPU {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Release|Any CPU.ActiveCfg = Release|Any CPU {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Release|Any CPU.Build.0 = Release|Any CPU - {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Release|x64.ActiveCfg = Release|x64 - {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Release|x64.Build.0 = Release|x64 - {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Release|x86.ActiveCfg = Release|x86 - {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Release|x86.Build.0 = Release|x86 + {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Release|x64.ActiveCfg = Release|Any CPU + {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Release|x64.Build.0 = Release|Any CPU + {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Release|x86.ActiveCfg = Release|Any CPU + {5F9D7DA1-FA5E-477C-87D7-2A131C99D090}.Release|x86.Build.0 = Release|Any CPU {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Debug|x64.ActiveCfg = Debug|x64 - {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Debug|x64.Build.0 = Debug|x64 - {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Debug|x86.ActiveCfg = Debug|x86 - {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Debug|x86.Build.0 = Debug|x86 + {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Debug|x64.ActiveCfg = Debug|Any CPU + {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Debug|x64.Build.0 = Debug|Any CPU + {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Debug|x86.ActiveCfg = Debug|Any CPU + {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Debug|x86.Build.0 = Debug|Any CPU {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Release|Any CPU.ActiveCfg = Release|Any CPU {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Release|Any CPU.Build.0 = Release|Any CPU - {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Release|x64.ActiveCfg = Release|x64 - {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Release|x64.Build.0 = Release|x64 - {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Release|x86.ActiveCfg = Release|x86 - {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Release|x86.Build.0 = Release|x86 + {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Release|x64.ActiveCfg = Release|Any CPU + {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Release|x64.Build.0 = Release|Any CPU + {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Release|x86.ActiveCfg = Release|Any CPU + {CCDDFDE2-9958-476C-91DB-9F2907887ADE}.Release|x86.Build.0 = Release|Any CPU {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Debug|x64.ActiveCfg = Debug|x64 - {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Debug|x64.Build.0 = Debug|x64 - {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Debug|x86.ActiveCfg = Debug|x86 - {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Debug|x86.Build.0 = Debug|x86 + {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Debug|x64.ActiveCfg = Debug|Any CPU + {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Debug|x64.Build.0 = Debug|Any CPU + {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Debug|x86.ActiveCfg = Debug|Any CPU + {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Debug|x86.Build.0 = Debug|Any CPU {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Release|Any CPU.ActiveCfg = Release|Any CPU {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Release|Any CPU.Build.0 = Release|Any CPU - {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Release|x64.ActiveCfg = Release|x64 - {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Release|x64.Build.0 = Release|x64 - {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Release|x86.ActiveCfg = Release|x86 - {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Release|x86.Build.0 = Release|x86 + {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Release|x64.ActiveCfg = Release|Any CPU + {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Release|x64.Build.0 = Release|Any CPU + {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Release|x86.ActiveCfg = Release|Any CPU + {C50111DC-B037-4A4C-ACA1-5BDE93F7D42A}.Release|x86.Build.0 = Release|Any CPU {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Debug|x64.ActiveCfg = Debug|x64 - {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Debug|x64.Build.0 = Debug|x64 - {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Debug|x86.ActiveCfg = Debug|x86 - {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Debug|x86.Build.0 = Debug|x86 + {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Debug|x64.ActiveCfg = Debug|Any CPU + {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Debug|x64.Build.0 = Debug|Any CPU + {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Debug|x86.ActiveCfg = Debug|Any CPU + {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Debug|x86.Build.0 = Debug|Any CPU {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Release|Any CPU.ActiveCfg = Release|Any CPU {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Release|Any CPU.Build.0 = Release|Any CPU - {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Release|x64.ActiveCfg = Release|x64 - {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Release|x64.Build.0 = Release|x64 - {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Release|x86.ActiveCfg = Release|x86 - {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Release|x86.Build.0 = Release|x86 + {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Release|x64.ActiveCfg = Release|Any CPU + {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Release|x64.Build.0 = Release|Any CPU + {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Release|x86.ActiveCfg = Release|Any CPU + {DDE34459-B244-43F9-8DE2-8D1E70CB6609}.Release|x86.Build.0 = Release|Any CPU {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Debug|x64.ActiveCfg = Debug|x64 - {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Debug|x64.Build.0 = Debug|x64 - {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Debug|x86.ActiveCfg = Debug|x86 - {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Debug|x86.Build.0 = Debug|x86 + {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Debug|x64.ActiveCfg = Debug|Any CPU + {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Debug|x64.Build.0 = Debug|Any CPU + {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Debug|x86.ActiveCfg = Debug|Any CPU + {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Debug|x86.Build.0 = Debug|Any CPU {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Release|Any CPU.ActiveCfg = Release|Any CPU {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Release|Any CPU.Build.0 = Release|Any CPU - {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Release|x64.ActiveCfg = Release|x64 - {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Release|x64.Build.0 = Release|x64 - {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Release|x86.ActiveCfg = Release|x86 - {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Release|x86.Build.0 = Release|x86 + {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Release|x64.ActiveCfg = Release|Any CPU + {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Release|x64.Build.0 = Release|Any CPU + {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Release|x86.ActiveCfg = Release|Any CPU + {FA82E572-FC03-4C87-86FA-660AF06AA24A}.Release|x86.Build.0 = Release|Any CPU {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Debug|x64.ActiveCfg = Debug|x64 - {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Debug|x64.Build.0 = Debug|x64 - {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Debug|x86.ActiveCfg = Debug|x86 - {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Debug|x86.Build.0 = Debug|x86 + {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Debug|x64.ActiveCfg = Debug|Any CPU + {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Debug|x64.Build.0 = Debug|Any CPU + {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Debug|x86.ActiveCfg = Debug|Any CPU + {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Debug|x86.Build.0 = Debug|Any CPU {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Release|Any CPU.ActiveCfg = Release|Any CPU {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Release|Any CPU.Build.0 = Release|Any CPU - {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Release|x64.ActiveCfg = Release|x64 - {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Release|x64.Build.0 = Release|x64 - {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Release|x86.ActiveCfg = Release|x86 - {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Release|x86.Build.0 = Release|x86 + {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Release|x64.ActiveCfg = Release|Any CPU + {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Release|x64.Build.0 = Release|Any CPU + {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Release|x86.ActiveCfg = Release|Any CPU + {1C0A4103-B8E6-4AE1-88DA-B3EBC37B2441}.Release|x86.Build.0 = Release|Any CPU {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Debug|x64.ActiveCfg = Debug|x64 - {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Debug|x64.Build.0 = Debug|x64 - {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Debug|x86.ActiveCfg = Debug|x86 - {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Debug|x86.Build.0 = Debug|x86 + {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Debug|x64.ActiveCfg = Debug|Any CPU + {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Debug|x64.Build.0 = Debug|Any CPU + {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Debug|x86.ActiveCfg = Debug|Any CPU + {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Debug|x86.Build.0 = Debug|Any CPU {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Release|Any CPU.ActiveCfg = Release|Any CPU {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Release|Any CPU.Build.0 = Release|Any CPU - {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Release|x64.ActiveCfg = Release|x64 - {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Release|x64.Build.0 = Release|x64 - {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Release|x86.ActiveCfg = Release|x86 - {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Release|x86.Build.0 = Release|x86 + {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Release|x64.ActiveCfg = Release|Any CPU + {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Release|x64.Build.0 = Release|Any CPU + {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Release|x86.ActiveCfg = Release|Any CPU + {73D240B4-428D-4BC1-BC3C-C14D1D9D806E}.Release|x86.Build.0 = Release|Any CPU {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Debug|Any CPU.Build.0 = Debug|Any CPU - {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Debug|x64.ActiveCfg = Debug|x64 - {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Debug|x64.Build.0 = Debug|x64 - {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Debug|x86.ActiveCfg = Debug|x86 - {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Debug|x86.Build.0 = Debug|x86 + {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Debug|x64.ActiveCfg = Debug|Any CPU + {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Debug|x64.Build.0 = Debug|Any CPU + {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Debug|x86.ActiveCfg = Debug|Any CPU + {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Debug|x86.Build.0 = Debug|Any CPU {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Release|Any CPU.ActiveCfg = Release|Any CPU {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Release|Any CPU.Build.0 = Release|Any CPU - {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Release|x64.ActiveCfg = Release|x64 - {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Release|x64.Build.0 = Release|x64 - {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Release|x86.ActiveCfg = Release|x86 - {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Release|x86.Build.0 = Release|x86 + {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Release|x64.ActiveCfg = Release|Any CPU + {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Release|x64.Build.0 = Release|Any CPU + {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Release|x86.ActiveCfg = Release|Any CPU + {928CD7B2-BB6E-4E07-834E-67B20CA6D698}.Release|x86.Build.0 = Release|Any CPU {95E7F42A-74B9-4071-9A3C-86EF95A0EB1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {95E7F42A-74B9-4071-9A3C-86EF95A0EB1B}.Debug|Any CPU.Build.0 = Debug|Any CPU {95E7F42A-74B9-4071-9A3C-86EF95A0EB1B}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -212,5 +220,83 @@ Global {871F7BE0-B75F-4F9E-9C4D-CE9C4ECE7A88}.Release|x64.Build.0 = Release|Any CPU {871F7BE0-B75F-4F9E-9C4D-CE9C4ECE7A88}.Release|x86.ActiveCfg = Release|Any CPU {871F7BE0-B75F-4F9E-9C4D-CE9C4ECE7A88}.Release|x86.Build.0 = Release|Any CPU + {182B58DC-6787-4A09-8BCF-87A96737E5A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {182B58DC-6787-4A09-8BCF-87A96737E5A6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {182B58DC-6787-4A09-8BCF-87A96737E5A6}.Debug|x64.ActiveCfg = Debug|Any CPU + {182B58DC-6787-4A09-8BCF-87A96737E5A6}.Debug|x64.Build.0 = Debug|Any CPU + {182B58DC-6787-4A09-8BCF-87A96737E5A6}.Debug|x86.ActiveCfg = Debug|Any CPU + {182B58DC-6787-4A09-8BCF-87A96737E5A6}.Debug|x86.Build.0 = Debug|Any CPU + {182B58DC-6787-4A09-8BCF-87A96737E5A6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {182B58DC-6787-4A09-8BCF-87A96737E5A6}.Release|Any CPU.Build.0 = Release|Any CPU + {182B58DC-6787-4A09-8BCF-87A96737E5A6}.Release|x64.ActiveCfg = Release|Any CPU + {182B58DC-6787-4A09-8BCF-87A96737E5A6}.Release|x64.Build.0 = Release|Any CPU + {182B58DC-6787-4A09-8BCF-87A96737E5A6}.Release|x86.ActiveCfg = Release|Any CPU + {182B58DC-6787-4A09-8BCF-87A96737E5A6}.Release|x86.Build.0 = Release|Any CPU + {2DC00E3D-2099-4C58-B98F-B6B3F285739F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2DC00E3D-2099-4C58-B98F-B6B3F285739F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2DC00E3D-2099-4C58-B98F-B6B3F285739F}.Debug|x64.ActiveCfg = Debug|Any CPU + {2DC00E3D-2099-4C58-B98F-B6B3F285739F}.Debug|x64.Build.0 = Debug|Any CPU + {2DC00E3D-2099-4C58-B98F-B6B3F285739F}.Debug|x86.ActiveCfg = Debug|Any CPU + {2DC00E3D-2099-4C58-B98F-B6B3F285739F}.Debug|x86.Build.0 = Debug|Any CPU + {2DC00E3D-2099-4C58-B98F-B6B3F285739F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2DC00E3D-2099-4C58-B98F-B6B3F285739F}.Release|Any CPU.Build.0 = Release|Any CPU + {2DC00E3D-2099-4C58-B98F-B6B3F285739F}.Release|x64.ActiveCfg = Release|Any CPU + {2DC00E3D-2099-4C58-B98F-B6B3F285739F}.Release|x64.Build.0 = Release|Any CPU + {2DC00E3D-2099-4C58-B98F-B6B3F285739F}.Release|x86.ActiveCfg = Release|Any CPU + {2DC00E3D-2099-4C58-B98F-B6B3F285739F}.Release|x86.Build.0 = Release|Any CPU + {82A66FF6-5D66-4E39-8FF8-C8EBA0EB3A2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {82A66FF6-5D66-4E39-8FF8-C8EBA0EB3A2D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {82A66FF6-5D66-4E39-8FF8-C8EBA0EB3A2D}.Debug|x64.ActiveCfg = Debug|Any CPU + {82A66FF6-5D66-4E39-8FF8-C8EBA0EB3A2D}.Debug|x64.Build.0 = Debug|Any CPU + {82A66FF6-5D66-4E39-8FF8-C8EBA0EB3A2D}.Debug|x86.ActiveCfg = Debug|Any CPU + {82A66FF6-5D66-4E39-8FF8-C8EBA0EB3A2D}.Debug|x86.Build.0 = Debug|Any CPU + {82A66FF6-5D66-4E39-8FF8-C8EBA0EB3A2D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {82A66FF6-5D66-4E39-8FF8-C8EBA0EB3A2D}.Release|Any CPU.Build.0 = Release|Any CPU + {82A66FF6-5D66-4E39-8FF8-C8EBA0EB3A2D}.Release|x64.ActiveCfg = Release|Any CPU + {82A66FF6-5D66-4E39-8FF8-C8EBA0EB3A2D}.Release|x64.Build.0 = Release|Any CPU + {82A66FF6-5D66-4E39-8FF8-C8EBA0EB3A2D}.Release|x86.ActiveCfg = Release|Any CPU + {82A66FF6-5D66-4E39-8FF8-C8EBA0EB3A2D}.Release|x86.Build.0 = Release|Any CPU + {274786D8-2E30-40D7-81B5-DFA3872CF9B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {274786D8-2E30-40D7-81B5-DFA3872CF9B6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {274786D8-2E30-40D7-81B5-DFA3872CF9B6}.Debug|x64.ActiveCfg = Debug|Any CPU + {274786D8-2E30-40D7-81B5-DFA3872CF9B6}.Debug|x64.Build.0 = Debug|Any CPU + {274786D8-2E30-40D7-81B5-DFA3872CF9B6}.Debug|x86.ActiveCfg = Debug|Any CPU + {274786D8-2E30-40D7-81B5-DFA3872CF9B6}.Debug|x86.Build.0 = Debug|Any CPU + {274786D8-2E30-40D7-81B5-DFA3872CF9B6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {274786D8-2E30-40D7-81B5-DFA3872CF9B6}.Release|Any CPU.Build.0 = Release|Any CPU + {274786D8-2E30-40D7-81B5-DFA3872CF9B6}.Release|x64.ActiveCfg = Release|Any CPU + {274786D8-2E30-40D7-81B5-DFA3872CF9B6}.Release|x64.Build.0 = Release|Any CPU + {274786D8-2E30-40D7-81B5-DFA3872CF9B6}.Release|x86.ActiveCfg = Release|Any CPU + {274786D8-2E30-40D7-81B5-DFA3872CF9B6}.Release|x86.Build.0 = Release|Any CPU + {0F8297F6-FA4F-44B6-BF99-0FF71ECCF87A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0F8297F6-FA4F-44B6-BF99-0FF71ECCF87A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0F8297F6-FA4F-44B6-BF99-0FF71ECCF87A}.Debug|x64.ActiveCfg = Debug|Any CPU + {0F8297F6-FA4F-44B6-BF99-0FF71ECCF87A}.Debug|x64.Build.0 = Debug|Any CPU + {0F8297F6-FA4F-44B6-BF99-0FF71ECCF87A}.Debug|x86.ActiveCfg = Debug|Any CPU + {0F8297F6-FA4F-44B6-BF99-0FF71ECCF87A}.Debug|x86.Build.0 = Debug|Any CPU + {0F8297F6-FA4F-44B6-BF99-0FF71ECCF87A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0F8297F6-FA4F-44B6-BF99-0FF71ECCF87A}.Release|Any CPU.Build.0 = Release|Any CPU + {0F8297F6-FA4F-44B6-BF99-0FF71ECCF87A}.Release|x64.ActiveCfg = Release|Any CPU + {0F8297F6-FA4F-44B6-BF99-0FF71ECCF87A}.Release|x64.Build.0 = Release|Any CPU + {0F8297F6-FA4F-44B6-BF99-0FF71ECCF87A}.Release|x86.ActiveCfg = Release|Any CPU + {0F8297F6-FA4F-44B6-BF99-0FF71ECCF87A}.Release|x86.Build.0 = Release|Any CPU + {7A21A074-AEBB-4B33-80BA-D7DFBE87A449}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7A21A074-AEBB-4B33-80BA-D7DFBE87A449}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7A21A074-AEBB-4B33-80BA-D7DFBE87A449}.Debug|x64.ActiveCfg = Debug|Any CPU + {7A21A074-AEBB-4B33-80BA-D7DFBE87A449}.Debug|x64.Build.0 = Debug|Any CPU + {7A21A074-AEBB-4B33-80BA-D7DFBE87A449}.Debug|x86.ActiveCfg = Debug|Any CPU + {7A21A074-AEBB-4B33-80BA-D7DFBE87A449}.Debug|x86.Build.0 = Debug|Any CPU + {7A21A074-AEBB-4B33-80BA-D7DFBE87A449}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7A21A074-AEBB-4B33-80BA-D7DFBE87A449}.Release|Any CPU.Build.0 = Release|Any CPU + {7A21A074-AEBB-4B33-80BA-D7DFBE87A449}.Release|x64.ActiveCfg = Release|Any CPU + {7A21A074-AEBB-4B33-80BA-D7DFBE87A449}.Release|x64.Build.0 = Release|Any CPU + {7A21A074-AEBB-4B33-80BA-D7DFBE87A449}.Release|x86.ActiveCfg = Release|Any CPU + {7A21A074-AEBB-4B33-80BA-D7DFBE87A449}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {A3449832-9F8D-413F-8336-8EBEEB77353B} EndGlobalSection EndGlobal diff --git a/FacadePattern/Dimmer.cs b/FacadePattern/Dimmer.cs index d9cfef3..11c35df 100644 --- a/FacadePattern/Dimmer.cs +++ b/FacadePattern/Dimmer.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace FacadePattern { diff --git a/FacadePattern/DvdPlayer.cs b/FacadePattern/DvdPlayer.cs index ffaa58c..f442655 100644 --- a/FacadePattern/DvdPlayer.cs +++ b/FacadePattern/DvdPlayer.cs @@ -12,14 +12,14 @@ public void Insert(Dvd dvd) { _dvd = dvd; Console.WriteLine($"Inserting {dvd.Movie}"); - + } public void Play() => Console.WriteLine($"Playing {_dvd.Movie}"); public void Pause() { - Console.WriteLine($"Pausing at {_time = (new Random()).Next(_time,_time + 120)}"); + Console.WriteLine($"Pausing at {_time = (new Random()).Next(_time, _time + 120)}"); } public void Resume() diff --git a/FacadePattern/FacadePattern.csproj b/FacadePattern/FacadePattern.csproj index ce1697a..74abf5c 100644 --- a/FacadePattern/FacadePattern.csproj +++ b/FacadePattern/FacadePattern.csproj @@ -2,7 +2,9 @@ Exe - netcoreapp2.0 + net6.0 + enable + enable diff --git a/FacadePattern/HometheaterFacade.cs b/FacadePattern/HometheaterFacade.cs index 2d09049..703828e 100644 --- a/FacadePattern/HometheaterFacade.cs +++ b/FacadePattern/HometheaterFacade.cs @@ -5,8 +5,8 @@ public class HomeTheatreFacade private Dimmer _dimmer; private Dvd _dvd; private DvdPlayer _dvdPlayer; - - public HomeTheatreFacade(Dimmer dimmer,Dvd dvd, DvdPlayer dvdPlayer) + + public HomeTheatreFacade(Dimmer dimmer, Dvd dvd, DvdPlayer dvdPlayer) { _dvd = dvd; _dimmer = dimmer; diff --git a/FacadePattern/Program.cs b/FacadePattern/Program.cs index a695029..074539c 100644 --- a/FacadePattern/Program.cs +++ b/FacadePattern/Program.cs @@ -9,7 +9,7 @@ private static void Main() var dimmer = new Dimmer(); var dvdPlayer = new DvdPlayer(); var dvd = new Dvd("Gone with the Wind 2 : Electric Bugaloo"); - var homeTheater = new HomeTheatreFacade(dimmer,dvd,dvdPlayer); + var homeTheater = new HomeTheatreFacade(dimmer, dvd, dvdPlayer); homeTheater.WatchMovie(); Console.WriteLine(); diff --git a/FactoryPattern/Abstract Factory/ChicagoIngredientsFactory.cs b/FactoryPattern/Abstract Factory/ChicagoIngredientsFactory.cs new file mode 100644 index 0000000..53c9430 --- /dev/null +++ b/FactoryPattern/Abstract Factory/ChicagoIngredientsFactory.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; + +namespace FactoryPattern +{ + internal class ChicagoIngredientsFactory : IIngredientsFactory + { + ICheese IIngredientsFactory.CreateCheese() + { + return new Parmesan(); + } + + IClam IIngredientsFactory.CreateClam() + { + return new FreshClam(); + } + + IDough IIngredientsFactory.CreateDough() + { + return new DeepDish(); + } + + ISauce IIngredientsFactory.CreateSauce() + { + return new PlumTomato(); + } + + IEnumerable IIngredientsFactory.CreateVeggies() + { + var oni = new Onion(); + var ccm = new Cucumber(); + var ppr = new Pepper(); + IVeggies[] arr = { oni, ccm, ppr }; + return arr; + } + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/IIngredientsFactory.cs b/FactoryPattern/Abstract Factory/IIngredientsFactory.cs new file mode 100644 index 0000000..9010710 --- /dev/null +++ b/FactoryPattern/Abstract Factory/IIngredientsFactory.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; + +namespace FactoryPattern +{ + interface IIngredientsFactory + { + IDough CreateDough(); + IEnumerable CreateVeggies(); + ISauce CreateSauce(); + ICheese CreateCheese(); + IClam CreateClam(); + } +} diff --git a/FactoryPattern/Abstract Factory/Ingredients/CherryTomato.cs b/FactoryPattern/Abstract Factory/Ingredients/CherryTomato.cs new file mode 100644 index 0000000..0b5be78 --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/CherryTomato.cs @@ -0,0 +1,7 @@ +namespace FactoryPattern +{ + internal class CherryTomato : ISauce + { + public string Name => "Cherry Tomato"; + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/Cucumber.cs b/FactoryPattern/Abstract Factory/Ingredients/Cucumber.cs new file mode 100644 index 0000000..39be3a1 --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/Cucumber.cs @@ -0,0 +1,7 @@ +namespace FactoryPattern +{ + internal class Cucumber : IVeggies + { + public string Name => "Cucumber"; + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/DeepDish.cs b/FactoryPattern/Abstract Factory/Ingredients/DeepDish.cs new file mode 100644 index 0000000..3d6ef79 --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/DeepDish.cs @@ -0,0 +1,7 @@ +namespace FactoryPattern +{ + internal class DeepDish : IDough + { + public string Name => "Deep Dish"; + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/FreshClam.cs b/FactoryPattern/Abstract Factory/Ingredients/FreshClam.cs new file mode 100644 index 0000000..e2cf85a --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/FreshClam.cs @@ -0,0 +1,7 @@ +namespace FactoryPattern +{ + internal class FreshClam : IClam + { + public string Name => "Fresh Clam"; + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/FrozenClam.cs b/FactoryPattern/Abstract Factory/Ingredients/FrozenClam.cs new file mode 100644 index 0000000..45bdcc9 --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/FrozenClam.cs @@ -0,0 +1,7 @@ +namespace FactoryPattern +{ + internal class FrozenClam : IClam + { + public string Name => "Frozen Clam"; + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/Interfaces/ICheese.cs b/FactoryPattern/Abstract Factory/Ingredients/Interfaces/ICheese.cs new file mode 100644 index 0000000..5c9f2f7 --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/Interfaces/ICheese.cs @@ -0,0 +1,7 @@ +namespace FactoryPattern +{ + public interface ICheese + { + string Name { get; } + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/Interfaces/IClam.cs b/FactoryPattern/Abstract Factory/Ingredients/Interfaces/IClam.cs new file mode 100644 index 0000000..5aaa65e --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/Interfaces/IClam.cs @@ -0,0 +1,7 @@ +namespace FactoryPattern +{ + public interface IClam + { + string Name { get; } + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/Interfaces/IDough.cs b/FactoryPattern/Abstract Factory/Ingredients/Interfaces/IDough.cs new file mode 100644 index 0000000..9bb5b89 --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/Interfaces/IDough.cs @@ -0,0 +1,7 @@ +namespace FactoryPattern +{ + public interface IDough + { + string Name { get; } + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/Interfaces/ISauce.cs b/FactoryPattern/Abstract Factory/Ingredients/Interfaces/ISauce.cs new file mode 100644 index 0000000..647b073 --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/Interfaces/ISauce.cs @@ -0,0 +1,7 @@ +namespace FactoryPattern +{ + public interface ISauce + { + string Name { get; } + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/Interfaces/IVeggies.cs b/FactoryPattern/Abstract Factory/Ingredients/Interfaces/IVeggies.cs new file mode 100644 index 0000000..d258bd8 --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/Interfaces/IVeggies.cs @@ -0,0 +1,7 @@ +namespace FactoryPattern +{ + public interface IVeggies + { + string Name { get; } + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/Mozarella.cs b/FactoryPattern/Abstract Factory/Ingredients/Mozarella.cs new file mode 100644 index 0000000..30d780f --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/Mozarella.cs @@ -0,0 +1,7 @@ +namespace FactoryPattern +{ + internal class Mozarella : ICheese + { + public string Name => "Mozarella"; + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/Olive.cs b/FactoryPattern/Abstract Factory/Ingredients/Olive.cs new file mode 100644 index 0000000..f0b9d48 --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/Olive.cs @@ -0,0 +1,7 @@ +namespace FactoryPattern +{ + internal class Olive : IVeggies + { + public string Name => "Olives"; + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/Onion.cs b/FactoryPattern/Abstract Factory/Ingredients/Onion.cs new file mode 100644 index 0000000..c752b3c --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/Onion.cs @@ -0,0 +1,11 @@ +namespace FactoryPattern +{ + internal class Onion : IVeggies + { + public Onion() + { + } + + public string Name => "Onions"; + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/Parmesan.cs b/FactoryPattern/Abstract Factory/Ingredients/Parmesan.cs new file mode 100644 index 0000000..05b95da --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/Parmesan.cs @@ -0,0 +1,7 @@ +namespace FactoryPattern +{ + internal class Parmesan : ICheese + { + public string Name => "Parmesan"; + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/Pepper.cs b/FactoryPattern/Abstract Factory/Ingredients/Pepper.cs new file mode 100644 index 0000000..9f1a1e5 --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/Pepper.cs @@ -0,0 +1,8 @@ +namespace FactoryPattern +{ + internal class Pepper : IVeggies + { + + public string Name => "Bell Peppers"; + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/PlumTomato.cs b/FactoryPattern/Abstract Factory/Ingredients/PlumTomato.cs new file mode 100644 index 0000000..dfa40db --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/PlumTomato.cs @@ -0,0 +1,7 @@ +namespace FactoryPattern +{ + internal class PlumTomato : ISauce + { + public string Name => "Plum Tomato"; + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/Ingredients/ThinCrust.cs b/FactoryPattern/Abstract Factory/Ingredients/ThinCrust.cs new file mode 100644 index 0000000..5fbe3e6 --- /dev/null +++ b/FactoryPattern/Abstract Factory/Ingredients/ThinCrust.cs @@ -0,0 +1,7 @@ +namespace FactoryPattern +{ + internal class ThinCrust : IDough + { + public string Name => "Thin Crust"; + } +} \ No newline at end of file diff --git a/FactoryPattern/Abstract Factory/NYIngredientsFactory.cs b/FactoryPattern/Abstract Factory/NYIngredientsFactory.cs new file mode 100644 index 0000000..dc0ea1c --- /dev/null +++ b/FactoryPattern/Abstract Factory/NYIngredientsFactory.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; + +namespace FactoryPattern +{ + internal class NyIngredientsFactory : IIngredientsFactory + { + ICheese IIngredientsFactory.CreateCheese() + { + return new Mozarella(); + } + + IClam IIngredientsFactory.CreateClam() + { + return new FrozenClam(); + } + + IDough IIngredientsFactory.CreateDough() + { + return new ThinCrust(); + } + + ISauce IIngredientsFactory.CreateSauce() + { + return new CherryTomato(); + } + + IEnumerable IIngredientsFactory.CreateVeggies() + { + IVeggies[] arr = { new Onion(), new Pepper(), new Olive() }; + return arr; + } + } +} \ No newline at end of file diff --git a/FactoryPattern/Factory Method/ChicagoPizzaFactory.cs b/FactoryPattern/Factory Method/ChicagoPizzaFactory.cs new file mode 100644 index 0000000..234bdb0 --- /dev/null +++ b/FactoryPattern/Factory Method/ChicagoPizzaFactory.cs @@ -0,0 +1,33 @@ +namespace FactoryPattern +{ + class ChicagoPizzaFactory : PizzaFactory + { + private readonly string chicagoCheese = "Chicago Cheese"; + private readonly string chicagoClam = "Chicago Clam"; + private readonly string chicagoVeggie = "Chicago Veggie"; + + protected override Pizza Create(PizzaType type) + { + Pizza pizza; + IIngredientsFactory ingredients = new ChicagoIngredientsFactory(); + + if (type == PizzaType.Cheese) + { + pizza = new CheesePizza(ingredients); + pizza.Name = chicagoCheese; + } + else if (type == PizzaType.Clam) + { + pizza = new ClamPizza(ingredients); + pizza.Name = chicagoClam; + } + else + { + pizza = new VeggiePizza(ingredients); + pizza.Name = chicagoVeggie; + } + pizza.Color = "red"; + return pizza; + } + } +} diff --git a/FactoryPattern/Factory Method/NYPizzaFactory.cs b/FactoryPattern/Factory Method/NYPizzaFactory.cs new file mode 100644 index 0000000..de2d0b7 --- /dev/null +++ b/FactoryPattern/Factory Method/NYPizzaFactory.cs @@ -0,0 +1,30 @@ +namespace FactoryPattern +{ + class NyPizzaFactory : PizzaFactory + { + private readonly string nyStyleCheese = "NY Style Cheese"; + private readonly string nyStyleClam = "NY Style Clam"; + private readonly string nyStyleVeggie = "NY Style Veggie"; + + protected override Pizza Create(PizzaType type) + { + Pizza pizza; + IIngredientsFactory ingredients = new NyIngredientsFactory(); + + if (type == PizzaType.Cheese) + { + pizza = new CheesePizza(ingredients) { Name = nyStyleCheese }; + } + else if (type == PizzaType.Clam) + { + pizza = new ClamPizza(ingredients) { Name = nyStyleClam }; + } + else + { + pizza = new VeggiePizza(ingredients) { Name = nyStyleVeggie }; + } + pizza.Color = "blue"; + return pizza; + } + } +} diff --git a/FactoryPattern/Factory Method/PizzaFactory.cs b/FactoryPattern/Factory Method/PizzaFactory.cs new file mode 100644 index 0000000..f0b7a38 --- /dev/null +++ b/FactoryPattern/Factory Method/PizzaFactory.cs @@ -0,0 +1,17 @@ +namespace FactoryPattern +{ + abstract class PizzaFactory + { + public Pizza Order(PizzaType type) + { + var pizza = Create(type); + pizza.Prepare(); + pizza.Bake(); + pizza.Cut(); + pizza.Box(); + return pizza; + } + + protected abstract Pizza Create(PizzaType type); + } +} diff --git a/FactoryPattern/FactoryPattern.csproj b/FactoryPattern/FactoryPattern.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/FactoryPattern/FactoryPattern.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/FactoryPattern/Helper.cs b/FactoryPattern/Helper.cs new file mode 100644 index 0000000..4a897e8 --- /dev/null +++ b/FactoryPattern/Helper.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FactoryPattern +{ + internal class Helper + { + } + + internal enum PizzaType + { + Cheese, + Clam + } +} diff --git a/FactoryPattern/Pizza/CheesePizza.cs b/FactoryPattern/Pizza/CheesePizza.cs new file mode 100644 index 0000000..c7e26b5 --- /dev/null +++ b/FactoryPattern/Pizza/CheesePizza.cs @@ -0,0 +1,25 @@ +using System; + +namespace FactoryPattern +{ + class CheesePizza : Pizza + { + readonly IIngredientsFactory _ingredients; + + public CheesePizza(IIngredientsFactory ing) + { + _ingredients = ing; + } + internal override void Prepare() + { + Console.WriteLine("Preparing " + Name + " Using"); + Console.Write("Dough: " + _ingredients.CreateDough().Name + ", Cheese: " + _ingredients.CreateCheese().Name + ", Sauce: " + _ingredients.CreateSauce().Name + ", Veggies: "); + Console.WriteLine(); + foreach (var val in _ingredients.CreateVeggies()) + { + Console.Write(val.Name + " "); + } + Console.WriteLine(); + } + } +} diff --git a/FactoryPattern/Pizza/ClamPizza.cs b/FactoryPattern/Pizza/ClamPizza.cs new file mode 100644 index 0000000..1879cf9 --- /dev/null +++ b/FactoryPattern/Pizza/ClamPizza.cs @@ -0,0 +1,22 @@ +using System; + +namespace FactoryPattern +{ + class ClamPizza : Pizza + { + readonly IIngredientsFactory _ingredients; + + public ClamPizza(IIngredientsFactory ing) + { + _ingredients = ing; + } + + internal override void Prepare() + { + Console.WriteLine("Preparing " + Name + " Using"); + Console.Write("Dough: " + _ingredients.CreateDough().Name + ", Clam: " + _ingredients.CreateClam().Name + ", Sauce: " + _ingredients.CreateSauce().Name + ", Cheese: " + _ingredients.CreateCheese().Name); + Console.WriteLine(); + + } + } +} diff --git a/FactoryPattern/Pizza/Pizza.cs b/FactoryPattern/Pizza/Pizza.cs new file mode 100644 index 0000000..e50ec8a --- /dev/null +++ b/FactoryPattern/Pizza/Pizza.cs @@ -0,0 +1,26 @@ +using System; + +namespace FactoryPattern +{ + abstract class Pizza + { + public string Color; + + internal abstract void Prepare(); + internal void Bake() + { + Console.WriteLine("Baking at 135 degree Celsius for 20 minutes"); + } + internal void Cut() + { + Console.WriteLine("Cutting into diagonal pieces"); + } + internal void Box() + { + Console.WriteLine("Putting pizza in " + Color + " coloured box"); + } + + public string Name { protected get; set; } + + } +} diff --git a/FactoryPattern/Pizza/VeggiePizza.cs b/FactoryPattern/Pizza/VeggiePizza.cs new file mode 100644 index 0000000..e0796e0 --- /dev/null +++ b/FactoryPattern/Pizza/VeggiePizza.cs @@ -0,0 +1,25 @@ +using System; + +namespace FactoryPattern +{ + class VeggiePizza : Pizza + { + readonly IIngredientsFactory _ingredients; + + public VeggiePizza(IIngredientsFactory ing) + { + _ingredients = ing; + } + internal override void Prepare() + { + Console.WriteLine("Preparing " + Name + " Using"); + Console.Write("Dough: " + _ingredients.CreateDough().Name + ", Cheese: " + _ingredients.CreateCheese().Name + ", Sauce: " + _ingredients.CreateSauce().Name + ", Veggies: "); + Console.WriteLine(); + foreach (var val in _ingredients.CreateVeggies()) + { + Console.Write(val.Name + " "); + } + Console.WriteLine(); + } + } +} diff --git a/FactoryPattern/Program.cs b/FactoryPattern/Program.cs new file mode 100644 index 0000000..0612463 --- /dev/null +++ b/FactoryPattern/Program.cs @@ -0,0 +1,18 @@ +using System; + +namespace FactoryPattern +{ + static class Program + { + static void Main() + { + Console.WriteLine("Yankees fan orders:"); + var yankees = new NyPizzaFactory(); + yankees.Order(PizzaType.Cheese); + Console.WriteLine(); + Console.WriteLine("Cubs fan orders:"); + var cubs = new ChicagoPizzaFactory(); + cubs.Order(PizzaType.Clam); + } + } +} \ No newline at end of file diff --git a/FlyweightPattern/BubbleMilkTea.cs b/FlyweightPattern/BubbleMilkTea.cs index 476cd3e..c58ab9b 100644 --- a/FlyweightPattern/BubbleMilkTea.cs +++ b/FlyweightPattern/BubbleMilkTea.cs @@ -2,7 +2,7 @@ namespace FlyweightPattern { - public class BubbleMilkTea: IBeverage + public class BubbleMilkTea : IBeverage { public BubbleMilkTea() { diff --git a/FlyweightPattern/BubbleTeaShop.cs b/FlyweightPattern/BubbleTeaShop.cs index 4b30646..e6bcbae 100644 --- a/FlyweightPattern/BubbleTeaShop.cs +++ b/FlyweightPattern/BubbleTeaShop.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Reflection.Metadata.Ecma335; namespace FlyweightPattern { @@ -17,7 +16,7 @@ public BubbleTeaShop() private void TakeOrders() { var factory = new BeverageFlyweightFactory(); - + takeAwayOrders.Add(factory.MakeBeverage(BeverageType.BubbleMilk)); takeAwayOrders.Add(factory.MakeBeverage(BeverageType.BubbleMilk)); takeAwayOrders.Add(factory.MakeBeverage(BeverageType.CoconutMilk)); diff --git a/FlyweightPattern/CoconutMilkTea.cs b/FlyweightPattern/CoconutMilkTea.cs index b5c89b2..f96035b 100644 --- a/FlyweightPattern/CoconutMilkTea.cs +++ b/FlyweightPattern/CoconutMilkTea.cs @@ -2,13 +2,13 @@ namespace FlyweightPattern { - public class CoconutMilkTea: IBeverage + public class CoconutMilkTea : IBeverage { public CoconutMilkTea() { Console.WriteLine("Initializing a Coconut Milk Tea instance"); } - + public void Drink() { Console.WriteLine("hmmm... this is coconut milk tea"); diff --git a/FlyweightPattern/FlyweightPattern.csproj b/FlyweightPattern/FlyweightPattern.csproj index 51b7f6c..74abf5c 100644 --- a/FlyweightPattern/FlyweightPattern.csproj +++ b/FlyweightPattern/FlyweightPattern.csproj @@ -1,8 +1,10 @@ - - Exe - netcoreapp2.1 - + + Exe + net6.0 + enable + enable + diff --git a/FlyweightPattern/FoamMilkTea.cs b/FlyweightPattern/FoamMilkTea.cs index eb5c31a..958b9d7 100644 --- a/FlyweightPattern/FoamMilkTea.cs +++ b/FlyweightPattern/FoamMilkTea.cs @@ -2,14 +2,14 @@ namespace FlyweightPattern { - public class FoamMilkTea:IBeverage + public class FoamMilkTea : IBeverage { - + public FoamMilkTea() { Console.WriteLine("Initializing a Foam Milk Tea instance"); } - + public void Drink() { Console.WriteLine("hmmm... this is foam milk tea"); diff --git a/FlyweightPattern/OolingMilkTea.cs b/FlyweightPattern/OolingMilkTea.cs index 432be67..40a3715 100644 --- a/FlyweightPattern/OolingMilkTea.cs +++ b/FlyweightPattern/OolingMilkTea.cs @@ -2,7 +2,7 @@ namespace FlyweightPattern { - public class OolingMilkTea: IBeverage + public class OolingMilkTea : IBeverage { public OolingMilkTea() diff --git a/FlyweightPattern/Program.cs b/FlyweightPattern/Program.cs index 91d6ab2..462bab7 100644 --- a/FlyweightPattern/Program.cs +++ b/FlyweightPattern/Program.cs @@ -1,6 +1,4 @@ -using System; - -namespace FlyweightPattern +namespace FlyweightPattern { static class Program { diff --git a/IteratorPattern/BreakfastMenu.cs b/IteratorPattern/BreakfastMenu.cs index c9ad3d8..f4b5073 100644 --- a/IteratorPattern/BreakfastMenu.cs +++ b/IteratorPattern/BreakfastMenu.cs @@ -20,16 +20,16 @@ public BreakfastMenu() AddItem("Waffle", "Blueberry Sauce topped breakfast Waffles", 125, false); AddItem("Sandwich", "Veggie Sandwich with tomato and cucumber", 75, true); - AddItem("Pankcakes", "Maple syrup Pancakes",110,false); - AddItem("Corn Flakes", "Cornflakes with fruits and nuts",60,true); + AddItem("Pankcakes", "Maple syrup Pancakes", 110, false); + AddItem("Corn Flakes", "Cornflakes with fruits and nuts", 60, true); } private void AddItem(string name, string description, int price, bool veg) { - var item = new Menu(name,description,price,veg); + var item = new Menu(name, description, price, veg); _items.Add(item); } - + } } \ No newline at end of file diff --git a/IteratorPattern/BreakfastMenuEnum.cs b/IteratorPattern/BreakfastMenuEnum.cs index d661b02..683cd3c 100644 --- a/IteratorPattern/BreakfastMenuEnum.cs +++ b/IteratorPattern/BreakfastMenuEnum.cs @@ -37,7 +37,7 @@ public Menu Current { try { - return (Menu) _items[_position]; + return (Menu)_items[_position]; } catch (IndexOutOfRangeException) { diff --git a/IteratorPattern/BreakfastMenuIterator.cs b/IteratorPattern/BreakfastMenuIterator.cs index 9c25928..68bd86e 100644 --- a/IteratorPattern/BreakfastMenuIterator.cs +++ b/IteratorPattern/BreakfastMenuIterator.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections; -using System.Collections.Generic; +using System.Collections; namespace IteratorPattern { diff --git a/IteratorPattern/Client.cs b/IteratorPattern/Client.cs index 21f2db8..27a1a5b 100644 --- a/IteratorPattern/Client.cs +++ b/IteratorPattern/Client.cs @@ -26,7 +26,7 @@ private void PrintMenu(IEnumerable iter) { foreach (var item in iter) { - var i = (Menu) item; + var i = (Menu)item; Console.WriteLine($"{i.Name} Rs. {i.Price} { (i.Vegetarian ? "*" : "x") } \n {i.Description} "); } diff --git a/IteratorPattern/DinnerMenu.cs b/IteratorPattern/DinnerMenu.cs index cd0c7a6..877fcc7 100644 --- a/IteratorPattern/DinnerMenu.cs +++ b/IteratorPattern/DinnerMenu.cs @@ -28,7 +28,7 @@ public DinnerMenu() private void AddItems(string name, string description, int price, bool veg) { - var item = new Menu(name,description,price,veg); + var item = new Menu(name, description, price, veg); if (_count <= Max) { diff --git a/IteratorPattern/DinnerMenuEnum.cs b/IteratorPattern/DinnerMenuEnum.cs index a567833..68929eb 100644 --- a/IteratorPattern/DinnerMenuEnum.cs +++ b/IteratorPattern/DinnerMenuEnum.cs @@ -1,6 +1,5 @@ using System; using System.Collections; -using System.Collections.Generic; namespace IteratorPattern { diff --git a/IteratorPattern/DinnerMenuIterator.cs b/IteratorPattern/DinnerMenuIterator.cs index a5fd659..c4dca48 100644 --- a/IteratorPattern/DinnerMenuIterator.cs +++ b/IteratorPattern/DinnerMenuIterator.cs @@ -1,5 +1,4 @@ using System.Collections; -using System.Collections.Generic; namespace IteratorPattern { diff --git a/IteratorPattern/IteratorPattern.csproj b/IteratorPattern/IteratorPattern.csproj index ce1697a..74abf5c 100644 --- a/IteratorPattern/IteratorPattern.csproj +++ b/IteratorPattern/IteratorPattern.csproj @@ -2,7 +2,9 @@ Exe - netcoreapp2.0 + net6.0 + enable + enable diff --git a/IteratorPattern/Menu.cs b/IteratorPattern/Menu.cs index 355ed4d..984f85f 100644 --- a/IteratorPattern/Menu.cs +++ b/IteratorPattern/Menu.cs @@ -14,6 +14,6 @@ public Menu(string name, string description, double price, bool vegetarian) Price = price; Vegetarian = vegetarian; } - + } } \ No newline at end of file diff --git a/IteratorPattern/Program.cs b/IteratorPattern/Program.cs index 6f5712d..dae6a70 100644 --- a/IteratorPattern/Program.cs +++ b/IteratorPattern/Program.cs @@ -6,8 +6,8 @@ private static void Main() { var breakfast = new BreakfastMenu(); var dinner = new DinnerMenu(); - var waiter = new Client(breakfast,dinner); + var waiter = new Client(breakfast, dinner); waiter.PrintMenu(); } - } + } } diff --git a/MediatorPattern/Colleague.cs b/MediatorPattern/Colleague.cs new file mode 100644 index 0000000..78c694a --- /dev/null +++ b/MediatorPattern/Colleague.cs @@ -0,0 +1,14 @@ +namespace MediatorPattern +{ + abstract class Colleague + { + protected Mediator mediator; + + public Colleague(Mediator mediator) => this.mediator = mediator; + + public virtual void Send(string message) => this.mediator.Send(message, this); + + public abstract void Notify(string message); + + } +} \ No newline at end of file diff --git a/MediatorPattern/Customer.cs b/MediatorPattern/Customer.cs new file mode 100644 index 0000000..b3bf289 --- /dev/null +++ b/MediatorPattern/Customer.cs @@ -0,0 +1,14 @@ +using System; + +namespace MediatorPattern +{ + class Customer : Colleague + { + public Customer(Mediator mediator) : base(mediator) { } + + public override void Notify(string message) + { + Console.WriteLine($"Message to customer: {message}"); + } + } +} \ No newline at end of file diff --git a/MediatorPattern/ManagerMediator.cs b/MediatorPattern/ManagerMediator.cs new file mode 100644 index 0000000..ceda018 --- /dev/null +++ b/MediatorPattern/ManagerMediator.cs @@ -0,0 +1,22 @@ +namespace MediatorPattern +{ + class ManagerMediator : Mediator + { + public Colleague Customer { get; set; } + public Colleague Programmer { get; set; } + public Colleague Tester { get; set; } + + public override void Send(string message, Colleague colleague) + { + if (colleague == Customer) + { + Programmer.Notify(message); + } + else if (colleague == Programmer) + { + Tester.Notify(message); + } + else Customer.Notify(message); + } + } +} \ No newline at end of file diff --git a/MediatorPattern/Mediator.cs b/MediatorPattern/Mediator.cs new file mode 100644 index 0000000..2646a13 --- /dev/null +++ b/MediatorPattern/Mediator.cs @@ -0,0 +1,7 @@ +namespace MediatorPattern +{ + abstract class Mediator + { + public abstract void Send(string message, Colleague colleague); + } +} \ No newline at end of file diff --git a/MediatorPattern/MediatorPattern.csproj b/MediatorPattern/MediatorPattern.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/MediatorPattern/MediatorPattern.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/MediatorPattern/Program.cs b/MediatorPattern/Program.cs new file mode 100644 index 0000000..bbdddc5 --- /dev/null +++ b/MediatorPattern/Program.cs @@ -0,0 +1,19 @@ +namespace MediatorPattern +{ + class Program + { + static void Main(string[] args) + { + var mediator = new ManagerMediator(); + var customer = new Customer(mediator); + var programmer = new Programmer(mediator); + var tester = new Tester(mediator); + mediator.Customer = customer; + mediator.Programmer = programmer; + mediator.Tester = tester; + customer.Send("We have an order, need to make a program"); + programmer.Send("I have done program, need to test it"); + tester.Send("I have done testing, here is ready program for you"); + } + } +} \ No newline at end of file diff --git a/MediatorPattern/Programmer.cs b/MediatorPattern/Programmer.cs new file mode 100644 index 0000000..cef0b16 --- /dev/null +++ b/MediatorPattern/Programmer.cs @@ -0,0 +1,14 @@ +using System; + +namespace MediatorPattern +{ + class Programmer : Colleague + { + public Programmer(Mediator mediator) : base(mediator) { } + + public override void Notify(string message) + { + Console.WriteLine($"Message to programmer: {message}"); + } + } +} \ No newline at end of file diff --git a/MediatorPattern/Tester.cs b/MediatorPattern/Tester.cs new file mode 100644 index 0000000..0fe71d7 --- /dev/null +++ b/MediatorPattern/Tester.cs @@ -0,0 +1,14 @@ +using System; + +namespace MediatorPattern +{ + class Tester : Colleague + { + public Tester(Mediator mediator) : base(mediator) { } + + public override void Notify(string message) + { + Console.WriteLine($"Message to tester: {message}"); + } + } +} \ No newline at end of file diff --git a/ObserverPattern/ObserverPattern.csproj b/ObserverPattern/ObserverPattern.csproj index ce1697a..74abf5c 100644 --- a/ObserverPattern/ObserverPattern.csproj +++ b/ObserverPattern/ObserverPattern.csproj @@ -2,7 +2,9 @@ Exe - netcoreapp2.0 + net6.0 + enable + enable diff --git a/ObserverPattern/WeatherMonitor.cs b/ObserverPattern/WeatherMonitor.cs index 5cf8942..6d65f37 100644 --- a/ObserverPattern/WeatherMonitor.cs +++ b/ObserverPattern/WeatherMonitor.cs @@ -21,7 +21,7 @@ public WeatherMonitor(string name) { _name = name; } - + public void OnCompleted() { throw new NotImplementedException(); @@ -39,7 +39,7 @@ public void OnNext(Weather value) { string op = $"| Temperature : {value.Temperature} Celsius |"; Console.Write(op); - + } if (_name.Contains("P")) { @@ -48,7 +48,7 @@ public void OnNext(Weather value) } if (_name.Contains("H")) { - string op = $"| Humidity : {value.Humidity*100} % |"; + string op = $"| Humidity : {value.Humidity * 100} % |"; Console.Write(op); } if (!(_name.Contains("T") || _name.Contains("P") || _name.Contains("H"))) diff --git a/PrototypePattern/Circle.cs b/PrototypePattern/Circle.cs new file mode 100644 index 0000000..6289f77 --- /dev/null +++ b/PrototypePattern/Circle.cs @@ -0,0 +1,22 @@ +using System; + +namespace PrototypePattern +{ + class Circle : IFigure + { + readonly int _radius; + public Circle(int r) + { + _radius = r; + } + + public object Clone() + { + return new Circle(_radius); + } + public void GetInfo() + { + Console.WriteLine($"Circle with radius {_radius}"); + } + } +} \ No newline at end of file diff --git a/PrototypePattern/IFigure.cs b/PrototypePattern/IFigure.cs new file mode 100644 index 0000000..85879a4 --- /dev/null +++ b/PrototypePattern/IFigure.cs @@ -0,0 +1,9 @@ +using System; + +namespace PrototypePattern +{ + interface IFigure : ICloneable + { + void GetInfo(); + } +} \ No newline at end of file diff --git a/PrototypePattern/Program.cs b/PrototypePattern/Program.cs new file mode 100644 index 0000000..ebdecdb --- /dev/null +++ b/PrototypePattern/Program.cs @@ -0,0 +1,22 @@ +using System; + +namespace PrototypePattern +{ + class Program + { + static void Main(string[] args) + { + IFigure figure = new Rectangle(30, 40); + IFigure clonedFigure = (IFigure)figure.Clone(); + figure.GetInfo(); + clonedFigure.GetInfo(); + + figure = new Circle(30); + clonedFigure = (IFigure)figure.Clone(); + figure.GetInfo(); + clonedFigure.GetInfo(); + + Console.Read(); + } + } +} diff --git a/PrototypePattern/PrototypePattern.csproj b/PrototypePattern/PrototypePattern.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/PrototypePattern/PrototypePattern.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/PrototypePattern/Rectangle.cs b/PrototypePattern/Rectangle.cs new file mode 100644 index 0000000..9856cf2 --- /dev/null +++ b/PrototypePattern/Rectangle.cs @@ -0,0 +1,24 @@ +using System; + +namespace PrototypePattern +{ + class Rectangle : IFigure + { + readonly int _width; + readonly int _height; + public Rectangle(int w, int h) + { + _width = w; + _height = h; + } + + public object Clone() + { + return new Rectangle(_width, _height); + } + public void GetInfo() + { + Console.WriteLine($"Rectangle height {_height} and width {_width}"); + } + } +} \ No newline at end of file diff --git a/ProxyPattern/Image.cs b/ProxyPattern/Image.cs new file mode 100644 index 0000000..5041b84 --- /dev/null +++ b/ProxyPattern/Image.cs @@ -0,0 +1,8 @@ +namespace ProxyPattern +{ + public interface Image + { + void display(); + + } +} diff --git a/ProxyPattern/Program.cs b/ProxyPattern/Program.cs new file mode 100644 index 0000000..b0cedf6 --- /dev/null +++ b/ProxyPattern/Program.cs @@ -0,0 +1,19 @@ +using System; + +namespace ProxyPattern +{ + class Program + { + static void Main(string[] args) + { + Image image = new ProxyImage("testImage.jpg"); + + //image will be loaded from disk + image.display(); + Console.WriteLine(""); + + //image will not be loaded from disk + image.display(); + } + } +} diff --git a/ProxyPattern/ProxyImage.cs b/ProxyPattern/ProxyImage.cs new file mode 100644 index 0000000..bdab6de --- /dev/null +++ b/ProxyPattern/ProxyImage.cs @@ -0,0 +1,23 @@ +namespace ProxyPattern +{ + public class ProxyImage : Image + { + private RealImage _realImage; + private string _fileName; + + public ProxyImage(string fileName) + { + _fileName = fileName; + } + + + public void display() + { + if (_realImage == null) + { + _realImage = new RealImage(_fileName); + } + _realImage.display(); + } + } +} \ No newline at end of file diff --git a/ProxyPattern/ProxyPattern.csproj b/ProxyPattern/ProxyPattern.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/ProxyPattern/ProxyPattern.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/ProxyPattern/RealImage.cs b/ProxyPattern/RealImage.cs new file mode 100644 index 0000000..d0826fd --- /dev/null +++ b/ProxyPattern/RealImage.cs @@ -0,0 +1,27 @@ +using System; + +namespace ProxyPattern +{ + + public class RealImage : Image + { + + private string _fileName; + + public RealImage(string fileName) + { + _fileName = fileName; + loadFromDisk(_fileName); + } + + public void display() + { + Console.WriteLine("Displaying " + _fileName); + } + + private void loadFromDisk(string fileName) + { + Console.WriteLine("Loading " + fileName); + } + } +} \ No newline at end of file diff --git a/README.md b/README.md index 5f08678..f82eb91 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,15 @@ -# DesignPatterns -Design patterns are solutions to recurring problems; guidelines on how to tackle certain problems +# Design Patterns +Design patterns are solutions to recurring problems; guidelines on how to tackle certain problems. I have included implementations of some design patterns in C# to help beginners like me get their feet wet. -There are better alternatives available for some of them in the .NET Framework, so this is by no means a comprehensive tutorial +There are better alternatives available for some of them in the .NET Framework, so this is by no means a comprehensive tutorial. -Any comments and suggestions are welcome. If you want to add a new design pattern implementation, just follow the naming conversation, fork my repo and submit a pull request. Same goes for any improvements and modifications. +Any comments and suggestions are welcome. If you want to add a new design pattern implementation, just follow the naming convention, fork my repo and submit a pull request. Same goes for any improvements and modifications. + +This was created as a C# alternative to Java while reading https://www.oreilly.com/library/view/head-first-design/0596007124/ <- take a look at it if anything confuses you. ## Types of Design Patterns --------------------------- -There are three kinds of Design Patterns +There are three kinds of Design Patterns: * Creational * Structural @@ -18,6 +20,8 @@ There are three kinds of Design Patterns * [Adapter](/AdapterPattern) * [Bridge](/BridgePattern) +* [Builder](/BuilderPattern) +* [ChainOfResponsibility](/ChainOfResponsibilityPattern) * [Command](/CommandPattern) * [Composite](/CompositePattern) * [Decorator](/DecoratorPattern) @@ -25,8 +29,12 @@ There are three kinds of Design Patterns * [Factory](/FactoryPattern) * [Flyweight](/FlyweightPattern) * [Iterator](/IteratorPattern) +* [Mediator](/MediatorPattern) * [Observer](/ObserverPattern) +* [Prototype](/PrototypePattern) +* [Proxy](/ProxyPattern) * [Singleton](/SingletonPattern) +* [SingletonPattern.Tests](/SingletonPattern.Tests) * [State](/StatePattern) * [Strategy](/StrategyPattern) * [Template](/TemplatePattern) diff --git a/SingletonPattern.Tests/SingletonPattern.Tests.csproj b/SingletonPattern.Tests/SingletonPattern.Tests.csproj new file mode 100644 index 0000000..ec8a874 --- /dev/null +++ b/SingletonPattern.Tests/SingletonPattern.Tests.csproj @@ -0,0 +1,23 @@ + + + + net6.0 + enable + enable + + false + + + + + + + + + + + + + + + diff --git a/SingletonPattern.Tests/SingletonPatternTests.cs b/SingletonPattern.Tests/SingletonPatternTests.cs new file mode 100644 index 0000000..f015dfc --- /dev/null +++ b/SingletonPattern.Tests/SingletonPatternTests.cs @@ -0,0 +1,17 @@ +namespace SingletonPattern.Tests +{ + [TestFixture] + public class SingletonPatternTests + { + [Test] + public void GetInstance_CreateInstanceTwice_AreEqual() + { + // Arrange, Act + var firstAttemptInstance = ChocolateBoiler.GetInstance(); + var secondAttemptInstance = ChocolateBoiler.GetInstance(); + + // Assert + Assert.That(firstAttemptInstance, Is.EqualTo(secondAttemptInstance)); + } + } +} diff --git a/SingletonPattern.Tests/Usings.cs b/SingletonPattern.Tests/Usings.cs new file mode 100644 index 0000000..3244567 --- /dev/null +++ b/SingletonPattern.Tests/Usings.cs @@ -0,0 +1 @@ +global using NUnit.Framework; diff --git a/SingletonPattern/ChocolateBoiler.cs b/SingletonPattern/ChocolateBoiler.cs index 35d3e15..bdc6a2d 100644 --- a/SingletonPattern/ChocolateBoiler.cs +++ b/SingletonPattern/ChocolateBoiler.cs @@ -5,9 +5,9 @@ namespace SingletonPattern internal partial class ChocolateBoiler { private static readonly Lazy _singleton = new Lazy(() => new ChocolateBoiler()); - + public static ChocolateBoiler GetInstance() => _singleton.Value; - + private Status _boiler; private ChocolateBoiler() diff --git a/SingletonPattern/Program.cs b/SingletonPattern/Program.cs index 0609ca0..7d81245 100644 --- a/SingletonPattern/Program.cs +++ b/SingletonPattern/Program.cs @@ -11,7 +11,7 @@ static void Main() var chocoEggs = ChocolateBoiler.GetInstance(); chocoEggs.Fill(); chocoEggs.Boil(); - chocoEggs.Drain(); + chocoEggs.Drain(); } catch (Exception) { diff --git a/SingletonPattern/Properties/AssemblyInfo.cs b/SingletonPattern/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..f6a8309 --- /dev/null +++ b/SingletonPattern/Properties/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Runtime.CompilerServices; + +[assembly:InternalsVisibleTo("SingletonPattern.Tests")] diff --git a/SingletonPattern/SingletonPattern.csproj b/SingletonPattern/SingletonPattern.csproj index ce1697a..74abf5c 100644 --- a/SingletonPattern/SingletonPattern.csproj +++ b/SingletonPattern/SingletonPattern.csproj @@ -2,7 +2,9 @@ Exe - netcoreapp2.0 + net6.0 + enable + enable diff --git a/StatePattern/HasQuarterState.cs b/StatePattern/HasQuarterState.cs index f5e4d98..2dc106d 100644 --- a/StatePattern/HasQuarterState.cs +++ b/StatePattern/HasQuarterState.cs @@ -33,7 +33,7 @@ public void TurnCrank() { Machine.State = Machine.SoldState; } - } + } public void Dispense() { diff --git a/StatePattern/NoQuarterState.cs b/StatePattern/NoQuarterState.cs index 5f2d670..978114d 100644 --- a/StatePattern/NoQuarterState.cs +++ b/StatePattern/NoQuarterState.cs @@ -23,7 +23,7 @@ public void EjectQuarter() public void TurnCrank() { - Console.WriteLine("Can't turn crank without a quarter"); + Console.WriteLine("Can't turn crank without a quarter"); } public void Dispense() diff --git a/StatePattern/SoldState.cs b/StatePattern/SoldState.cs index 0c2d4f4..e8ecb33 100644 --- a/StatePattern/SoldState.cs +++ b/StatePattern/SoldState.cs @@ -18,7 +18,7 @@ public void InsertQuarter() public void EjectQuarter() { - Console.WriteLine("Can't eject, already turned the crank"); + Console.WriteLine("Can't eject, already turned the crank"); } public void TurnCrank() diff --git a/StatePattern/StatePattern.csproj b/StatePattern/StatePattern.csproj index ce1697a..74abf5c 100644 --- a/StatePattern/StatePattern.csproj +++ b/StatePattern/StatePattern.csproj @@ -2,7 +2,9 @@ Exe - netcoreapp2.0 + net6.0 + enable + enable diff --git a/StrategyPattern/Program.cs b/StrategyPattern/Program.cs index 85f9495..934724b 100644 --- a/StrategyPattern/Program.cs +++ b/StrategyPattern/Program.cs @@ -6,7 +6,8 @@ internal class Duck private IFlyBehaviour _flyer; - public IQuackBehaviour Quacker { + public IQuackBehaviour Quacker + { set { _quacker = value; @@ -52,7 +53,7 @@ internal static class Program { private static void Main() { - var mallard = new MallardDuck {Quacker = new QuackNormal()}; + var mallard = new MallardDuck { Quacker = new QuackNormal() }; mallard.Display(); mallard.Flyer = new FlyWings(); mallard.Display(); diff --git a/StrategyPattern/QuackNormal.cs b/StrategyPattern/QuackNormal.cs index aaa0b1f..0dc0053 100644 --- a/StrategyPattern/QuackNormal.cs +++ b/StrategyPattern/QuackNormal.cs @@ -7,6 +7,6 @@ class QuackNormal : IQuackBehaviour public void Quack() { Console.WriteLine("Quack Quack"); - } + } } } diff --git a/StrategyPattern/StrategyPattern.csproj b/StrategyPattern/StrategyPattern.csproj index ce1697a..74abf5c 100644 --- a/StrategyPattern/StrategyPattern.csproj +++ b/StrategyPattern/StrategyPattern.csproj @@ -2,7 +2,9 @@ Exe - netcoreapp2.0 + net6.0 + enable + enable diff --git a/TemplatePattern/Program.cs b/TemplatePattern/Program.cs index cc0c9b3..eb0abae 100644 --- a/TemplatePattern/Program.cs +++ b/TemplatePattern/Program.cs @@ -13,7 +13,7 @@ static void Main() tea.WantsCondiments = true; tea.AddSugar = 5; tea.Prepare(); - + Console.WriteLine(); coffee.WantsCondiments = true; coffee.Prepare(); diff --git a/TemplatePattern/TemplatePattern.csproj b/TemplatePattern/TemplatePattern.csproj index ce1697a..74abf5c 100644 --- a/TemplatePattern/TemplatePattern.csproj +++ b/TemplatePattern/TemplatePattern.csproj @@ -2,7 +2,9 @@ Exe - netcoreapp2.0 + net6.0 + enable + enable diff --git a/VisitorPattern/Apartment.cs b/VisitorPattern/Apartment.cs index bbf18df..63469c7 100644 --- a/VisitorPattern/Apartment.cs +++ b/VisitorPattern/Apartment.cs @@ -1,6 +1,6 @@ namespace VisitorPattern { - public class Apartment: Unit + public class Apartment : Unit { public Apartment(params Unit[] units) : base(units) { diff --git a/VisitorPattern/ApartmentVisitor.cs b/VisitorPattern/ApartmentVisitor.cs index 21e3d63..bdc6b81 100644 --- a/VisitorPattern/ApartmentVisitor.cs +++ b/VisitorPattern/ApartmentVisitor.cs @@ -2,7 +2,7 @@ namespace VisitorPattern { - public class ApartmentVisitor: IUnitVisitor + public class ApartmentVisitor : IUnitVisitor { public void VisitApartment(Apartment apartment) { diff --git a/VisitorPattern/Bedroom.cs b/VisitorPattern/Bedroom.cs index 3836d32..ee0d08e 100644 --- a/VisitorPattern/Bedroom.cs +++ b/VisitorPattern/Bedroom.cs @@ -1,6 +1,6 @@ namespace VisitorPattern { - public class Bedroom: Unit + public class Bedroom : Unit { public Bedroom(params Unit[] units) : base(units) { diff --git a/VisitorPattern/BedroomVisitor.cs b/VisitorPattern/BedroomVisitor.cs index 47cfa57..f4792ea 100644 --- a/VisitorPattern/BedroomVisitor.cs +++ b/VisitorPattern/BedroomVisitor.cs @@ -2,7 +2,7 @@ namespace VisitorPattern { - public class BedroomVisitor: IUnitVisitor + public class BedroomVisitor : IUnitVisitor { public void VisitApartment(Apartment apartment) { diff --git a/VisitorPattern/LivingRoom.cs b/VisitorPattern/LivingRoom.cs index 54699d3..31e7421 100644 --- a/VisitorPattern/LivingRoom.cs +++ b/VisitorPattern/LivingRoom.cs @@ -1,6 +1,6 @@ namespace VisitorPattern { - public class LivingRoom: Unit + public class LivingRoom : Unit { public LivingRoom(params Unit[] units) : base(units) { diff --git a/VisitorPattern/LivingRoomVisitor.cs b/VisitorPattern/LivingRoomVisitor.cs index a45ebb4..f6cf11a 100644 --- a/VisitorPattern/LivingRoomVisitor.cs +++ b/VisitorPattern/LivingRoomVisitor.cs @@ -2,7 +2,7 @@ namespace VisitorPattern { - public class LivingRoomVisitor: IUnitVisitor + public class LivingRoomVisitor : IUnitVisitor { public void VisitApartment(Apartment apartment) { diff --git a/VisitorPattern/Program.cs b/VisitorPattern/Program.cs index f328752..3d17f4d 100644 --- a/VisitorPattern/Program.cs +++ b/VisitorPattern/Program.cs @@ -12,7 +12,7 @@ static void Main() apartment.Accept(new ApartmentVisitor()); apartment.Accept(new LivingRoomVisitor()); apartment.Accept(new BedroomVisitor()); - + Console.WriteLine("Visiting a Studio"); studio.Accept(new StudioVisitor()); studio.Accept(new LivingRoomVisitor()); diff --git a/VisitorPattern/Studio.cs b/VisitorPattern/Studio.cs index 8bdc7d3..aa48f4e 100644 --- a/VisitorPattern/Studio.cs +++ b/VisitorPattern/Studio.cs @@ -1,6 +1,6 @@ namespace VisitorPattern { - public class Studio: Unit + public class Studio : Unit { public Studio(params Unit[] units) : base(units) { diff --git a/VisitorPattern/StudioVisitor.cs b/VisitorPattern/StudioVisitor.cs index 646af15..82c2521 100644 --- a/VisitorPattern/StudioVisitor.cs +++ b/VisitorPattern/StudioVisitor.cs @@ -2,7 +2,7 @@ namespace VisitorPattern { - public class StudioVisitor: IUnitVisitor + public class StudioVisitor : IUnitVisitor { public void VisitApartment(Apartment apartment) { diff --git a/VisitorPattern/VisitorPattern.csproj b/VisitorPattern/VisitorPattern.csproj index 51b7f6c..74abf5c 100644 --- a/VisitorPattern/VisitorPattern.csproj +++ b/VisitorPattern/VisitorPattern.csproj @@ -1,8 +1,10 @@ - - Exe - netcoreapp2.1 - + + Exe + net6.0 + enable + enable +