//MyPrototype using System; using System.Collections; //abstract PageStylePrototype Class 'Prototype abstract class PageStylePrototype { //Fields protected string stylestring; //Properties public string StyleString { get{return stylestring;} set{stylestring=value;} } //Methods abstract public PageStylePrototype Clone(); }; //---PageStyle Class--- class PageStyle:PageStylePrototype { //Constructor public PageStyle(String stylestr) { StyleString=stylestr; } override public PageStylePrototype Clone() { return (PageStylePrototype)this.MemberwiseClone(); } public void DisplayStyle() { Console.WriteLine(StyleString); } }; //--------------------------------------------End of Style Class //StyleManager Class class StyleManager { //Fields protected Hashtable styleht=new Hashtable(); protected PageStylePrototype styleref; //Constructors public StyleManager() { styleref=new PageStyle("thefirststyle"); styleht.Add("style1",styleref); styleref=new PageStyle("thesecondstyle"); styleht.Add("style2",styleref); styleref=new PageStyle("thethirdstyle"); styleht.Add("style3",styleref); } //Indexers public PageStylePrototype this[string key] { get{ return (PageStylePrototype)styleht[key];} set{ styleht.Add(key,value);} } }; //--------------------------------------------End of StyleManager Class //TestApp class TestApp { public static void Main(string[] args) { StyleManager stylemanager =new StyleManager(); PageStyle stylea =(PageStyle)stylemanager["style1"].Clone(); PageStyle styleb =(PageStyle)stylemanager["style2"].Clone(); PageStyle stylec =(PageStyle)stylemanager["style3"].Clone(); stylemanager["style4"]=new PageStyle("theforthstyle"); PageStyle styled =(PageStyle)stylemanager["style4"].Clone(); stylea.DisplayStyle(); styleb.DisplayStyle(); stylec.DisplayStyle(); styled.DisplayStyle(); while(true){} } }; [page] 中国.Net俱乐部转载此文。让我们一起进步,共享人类技术资源。[www.chinaaspx.com]
|