zoukankan      html  css  js  c++  java
  • 设计模式学习笔记——享元模式(Flyweight)

    1.特点:为运用共享技术,支持大量细粒度对象,节省开销。

    2.概念:运用共享技术有效地支持大量细粒度的对象。

    3.类图:

        public abstract class Character
        {
            public int Size { get; set; }
            public Color Color { get; set; }
            protected char _c;
    
            public Character()
            {
                Size = 10;
                Color = Color.Black;
            }
    
            public override string ToString()
            {
                return string.Format("Character is {0}, Size is {1}, Color is {2}", _c, Size.ToString(), Color.ToString());
            }
        }
        public class CharacterA : Character
        {
            public CharacterA()
            {
                _c = 'A';
            }
        }
    
        public class CharacterB : Character
        {
            public CharacterB()
            {
                _c = 'B';
            }
        }
    
        public class CharacterC : Character
        {
            public CharacterC()
            {
                _c = 'C';
            }
        }
        public static class CharacterFactory
        {
            private static Dictionary<char, Character> _characters;
    
            static CharacterFactory()
            {
                _characters = new Dictionary<char, Character>();
                _characters.Add('a', new CharacterA());
                _characters.Add('b', new CharacterB());
                _characters.Add('c', new CharacterC());
            }
    
            public static Character GetCharacter(char c)
            {
                return _characters[c];
            }
        }
        static void Main(string[] args)
        {
            Character character = CharacterFactory.GetCharacter('a');
            Console.WriteLine(character.ToString());
            character = CharacterFactory.GetCharacter('b');
            character.Size = 20;
            character.Color = Color.Red;
            Console.WriteLine(character.ToString());
            character = CharacterFactory.GetCharacter('c');
            character.Size = 15;
            character.Color = Color.Yellow;
            Console.WriteLine(character.ToString());
        }
    

      

  • 相关阅读:
    HDU 5087 (线性DP+次大LIS)
    POJ 1064 (二分)
    Codeforces 176B (线性DP+字符串)
    POJ 3352 (边双连通分量)
    Codeforces 55D (数位DP+离散化+数论)
    POJ 2117 (割点+连通分量)
    POJ 1523 (割点+连通分量)
    POJ 3661 (线性DP)
    POJ 2955 (区间DP)
    LightOJ 1422 (区间DP)
  • 原文地址:https://www.cnblogs.com/ice-baili/p/4710371.html
Copyright © 2011-2022 走看看