Esempio n. 1
0
        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);
        }