本文共 2353 字,大约阅读时间需要 7 分钟。
////// The 'Flyweight' class./// public class Character{ // intrinsic state protected char _symbol; protected int _size; protected string _font; // extrinsic state protected Position _position; public void Display(Position position) { Console.WriteLine( String.Format("Symbol: {0} Size: {1} Font: {2} Position: {3} {4}", _symbol, _size, _font, position._x, position._y)); }}////// A 'ConcreteFlyweight' class/// public class CharacterA : Character{ public CharacterA() { _symbol = 'A'; _size = 10; _font = "宋体"; //_position = new Position(0, 1); }}////// The 'FlyweightFactory' class/// public class CharacterFactory{ // Keeps the character object by specifying key/value. private Dictionary_characters = new Dictionary (); public Character this[char key] { get { Character character = null; // Checked the character whether existed or not, // if the character existed, then directly returns, // otherwise, instantiates a character object. if (_characters.ContainsKey(key)) { character = _characters[key]; } else { string name = this.GetType().Namespace + "." + "Character" + key.ToString(); character = Activator.CreateInstance( Type.GetType(name)) as Character; _characters.Add(key, character); } return character; } }}/// /// The client./// /// The args.static void Main(string[] args){ string text = "ABZABBZZ"; char[] letters = text.ToCharArray(); var characterFactory = new CharacterFactory(); // Creates random position ranges 0 to 100. var rd = new Random(); foreach (char c in letters) { Character character = characterFactory[c]; var p = new Position(rd.Next(0, 100), rd.Next(0, 100)); character.Display(p); } Console.ReadKey();}
转载地址:http://fdozz.baihongyu.com/