static void Main(string[] args) { /* * More info: https://en.wikipedia.org/wiki/Flyweight_pattern * What problems can the Flyweight design pattern solve? [2] * Large numbers of objects should be supported efficiently. * Creating large numbers of objects should be avoided. * * When representing large text documents, for example, creating an object for each character in the document * would result in a huge amount of objects that couldn't be processed efficiently. */ var simpleClient = new ClientObject(); //it'll share the same static FlyWeightPointer Console.WriteLine(simpleClient.Company); var flyWeightPointer = new ReducedMemoryFootprintFlavorFactory(); var minimalflyWeightPointer = new MinimumMemoryFootprint(); var coffeeMaker1 = new CoffeeMaker(flyWeightPointer); var coffeeMaker2 = new CoffeeMaker(flyWeightPointer); var coffeeMaker3 = new CoffeeMaker(flyWeightPointer); var coffeeMaker4 = new CoffeeMaker(flyWeightPointer); coffeeMaker1.MakeCoffee("Pepper?!"); coffeeMaker2.MakeCoffee("Lemon?"); coffeeMaker3.MakeCoffee("Chocolate"); coffeeMaker4.MakeCoffee("Spider"); }
public CoffeeMaker(ReducedMemoryFootprintFlavorFactory flavourFactory) { _flavourFactory = flavourFactory; }