static void Main(string[] args) { CharacterFactory factory = new CharacterFactory(); Random random = new Random(); // extrinsic state int pointSize = 10; Console.WriteLine("Start of object creation " + DateTime.Now.Millisecond); // For each character use a new object for (int i = 0; i < 1000000; i++) { int c = random.Next(65, 100); pointSize++; Character character = new ConcreteCharacter((char)c); } Console.WriteLine("End of object creation " + DateTime.Now.Millisecond); Console.WriteLine("Start of object creation " + DateTime.Now.Millisecond); // For each character use a flyweight object for (int i = 0; i < 1000000; i++) { int c = random.Next(65, 100); pointSize++; Character character = factory.GetCharacter((char)c); } Console.WriteLine("End of object creation " + DateTime.Now.Millisecond); // Wait for user Console.ReadKey(); }
static void Main(string[] args) { // canonical example int extrinsicState = 20; var factory = new FlyweightFactory(); var fa = factory.GetFlyWeight("A"); fa.Operation(extrinsicState--); var fb = factory.GetFlyWeight("B"); fb.Operation(extrinsicState--); var unsh = new UnsharedConcreteFlyweight(); unsh.Operation(extrinsicState--); Console.WriteLine(); // live example var fact = new CharacterFactory(); var cha = fact.GetCharacter('a'); cha.Display(100); }
/// <summary> /// The test first. /// </summary> private static void TestFirst() { // Build a document with text const string Document = "AAZZBBZB"; char[] chars = Document.ToCharArray(); CharacterFactory characterFactory = new CharacterFactory(); // extrinsic state int pointSize = 10; // For each character use a flyweight object foreach (char c in chars) { pointSize++; AbstractCharacter abstractCharacter = characterFactory.GetCharacter(c); abstractCharacter.Display(pointSize); } // Wait for user Console.ReadKey(); }