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(); }
public Character GetCharacter(char key) { Character character = null; if (_characters.ContainsKey(key)) { character = _characters[key]; } else { character = new ConcreteCharacter(key); _characters.Add(key, character); } return(character); }