设计模式学习笔记——享元模式(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());
}

浙公网安备 33010602011771号