C#静态类的使用 本帖最后由 w19891130 于 2012-09-29 13:10:54 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是一个蹩脚的套用“单例模式”的代码,更糟糕的是,这代码本身就是有问题的(参考CLR via C#中关于Double Check Lock的那一章)。之所以这样,是因为在Java和早期的C#中不支持静态类,所以才使用这么蹩脚的设计。 你的这段代码是singleton设计模式的c#实现。这个设计模式可以保证整个程序里只有一个GameUserCacheInstance类的实例而你说的把类做成静态类,看上去和singleton差不多,但是有一个重要的区别:singleton是创建一个类的唯一实例,这个实例可以具有面向对象的所有特性,比如多态、封装、继承。比如说,GameUserCacheInstance可以选择从XXXCache类继承下来,同时实现IXXXComparable接口静态类只能包括静态成员,比如static variables, static methods,无非从其它类继承。----PS,你的这个GameUserCacheInstance最好加上sealed关键字 正如楼上所说,对于非继承的情况,单例模式根本不需要,但是又和楼上有不同,楼上说最好加上sealed关键字,其实刚好相反,这里最好做出abstract(抽象类),让各种类继承它,而它内部的单例永远不是自己本身(抽象类不可能实例化),永远只能是它的派生类。这样的单例模式就实现了多态的需求。不过楼主你给的例子真应该用静态类替代,完全没必要搞成那样。 C# dateTime的问题 asp.NET、c#写的页面,360浏览器,刷新页面后,cookie失效,如何解决? 一个关于元搜索引擎的问题 string的Split的regex的Split有什么区别啊? 如何连同程序当前状态 一同 复制 gridview显示问题 类的封装一问题 类创建子窗体如何在父窗体显示,在线等 在webform界面下,如果获取datagrid的指单元格的值,兄弟们,帮忙了!!!!!!!!!!! 求组合的算法 C#中怎么把字段值转成XML中的属性而不是节点?求教! (c#)mssql代码生成器
这个设计模式可以保证整个程序里只有一个GameUserCacheInstance类的实例而你说的把类做成静态类,看上去和singleton差不多,但是有一个重要的区别:
singleton是创建一个类的唯一实例,这个实例可以具有面向对象的所有特性,比如多态、封装、继承。比如说,GameUserCacheInstance可以选择从XXXCache类继承下来,同时实现IXXXComparable接口
静态类只能包括静态成员,比如static variables, static methods,无非从其它类继承。----PS,你的这个GameUserCacheInstance最好加上sealed关键字