c#設計模式之享元模式
阿新 • • 發佈:2019-02-06
//類似單例模式加上工廠模式,避免大量建立物件帶來的記憶體消耗 using System; using System.Collections; public abstract class charactor { protected char _symbol; public abstract void display(); } public class charactorA : charactor { public charactorA() { this._symbol = 'A'; } public override void display() { Console.WriteLine(this._symbol); } } public class charactorB : charactor { public charactorB() { this._symbol = 'B'; } public override void display() { Console.WriteLine(this._symbol); } } public class charactorFactory { private static Hashtable charactors = new Hashtable(); private charactorFactory(){} public static charactor getCharactor(string key) { charactor ch = charactors[key] as charactor; if(null == ch) { switch(key) { case "A": ch = new charactorA(); break; case "B": ch = new charactorB(); break; } charactors.Add(key,ch); } return ch; } } class Program { static void Main(string[] args) { charactorA a = (charactorA)charactorFactory.getCharactor("A"); a.display(); charactorB b = (charactorB)charactorFactory.getCharactor("B"); b.display(); charactorB c = (charactorB)charactorFactory.getCharactor("B"); c.display(); Console.ReadKey(); } }