Posted on 2007-02-10 22:41
webabcd 阅读(7071)
评论(46) 编辑 收藏
Feedback
public class Singleton<T> where T : new()
这句话意思是什么呀?这种语法第一次见,能帮忙解释下么~?
where T : new()后头这点我不大明白……嘿嘿,我先去看你写的文章了~
webabcd大大
@pp孩
:)
“webabcd大大”是什么意思?我不老啊。。。
是说你很“大”的意思……
玩笑~呵呵
代表尊重啦~最近工作需要,正看服务器端组件呢,没及时过来,先不好意思下~
@webabcd
刚刚接触.net(2个月),以前有点JAVA基础,工作一年就写ASP代码了~,。NET一点没有接触,学的时候还是觉得有点迷茫~~
现在熟悉了委托,和基本的C#语法,正在研究服务器端组件,大大有没有什么好的学习建议捏?嘿嘿~~~麻烦了~
@PPBoy
别着急,慢慢来
可以在webcast上找一些相关教程
或者这里http://asp.net/learn/
都是英文的呀~看的很累~~嘿嘿
谢谢大大,难得你这么热心呢~~祝好人好报
我学的是Java Web应用上面的泛型实例就看到我们老师和我们讲过一次,是不是必须JDK1.5下才可以???
请问一下:
internal static readonly T instance = new T();
这个每次运行一下就会新建一个T类的实例吧。
是不是只有在程序结束的时候才会释放这个资源呢?有办法自己写代码释放吗?
@vincent_shen
不会的
请注意一下,是嵌套类
@戏水
static readonly
肯定是线程安全的
@ webabcd
static readonly 肯定是线程安全的.
学习了.这种线程安全是交给了CLR了,我是猜的啊.因为它被赋了一次值就不在可以改变了.这也应该是最简化的单例模式了.
线程是安全,不过这种方式的单列模式 如何做到真正的单列序列化呢?比如
[Serializable]
public class AlbumConfig
{
public int MaxAlbumCount
{
get;
set;
}
public bool AllowAlbum
{
get;
set;
}
private List<string> lista = new List<string>();
public List<string> Lista
{
get{return lista;}
set{lista=value;}
}
public void Serialiaze(AlbumConfig config,string FilePath)
{
ConfigManagerProvider.Save(config, FilePath);
}
public void Deserialiaze(Type type, string FilePath)
{
AlbumConfig cg = ((AlbumConfig)ConfigManagerProvider.Load(type, FilePath));
this.AllowAlbum = cg.AllowAlbum;
this.MaxAlbumCount = cg.MaxAlbumCount;
this.Lista = cg.Lista;
}
这样一个类。Deserialiaze是通过XML文件生成类本身。原先这个方法是返回AlbumConfig 类型。用你这个单列模式后改成这样的,感觉还是没有实现单列。
@leechzhao3
这个静态类,不用再单列了吧
嘿嘿钻下牛角尖嘛,你这种方式的单列,不知如何能在单列类对自身进行操作的好方式。用private _instance + lock的话就比较好实现了。
@leechzhao3
单列和线程安全不是一个概念的
T: where new()
类型参数必须具有无参数的公共构造函数
短小精悍,
用一个通用的类 来创建所有类的 单例对象。
很棒。
@gguozhenqian
是,泛型的用处还是很广的
@webabcd
哦,那我试试,其实我就是以前你帮我做了个SmartLabel的那位。
嘿嘿,楼主加油!
@奈何倾城
:)
肯定不用注册的,设计模式的文章都在这里http://www.dofactory.com/Patterns/Patterns.aspx
呵呵,知道你
一直努力中。。。就是经常有心无力,老了。。。
@webabcd
老当益壮,呵呵:)
你能一直坚持这写这些技术文档,让大家真的很受益。
正像是你说的--乐在其中!
也希望你哪天也能乐呵呵的把JAVA的相关技术文档这么有条理的发上来
期待ing 啦啦啦:)
@奈何倾城
:)
真的是不行了,理解东西没以前快了
当然越是这样越要努力,不然以后该没饭吃了
最近在做android开发,如果确定了android是我以后的重点发展方向的话,那么肯定会努力学习java的,呵呵,看情况了
这个是什么原理保证实例只有一个 不太明白 一般不都要判断实例不存在 然后在创建吗
我不是太明白,为什么这个泛型的类需要加约束?不是约束都是为了继承用的么?
@larc
这里的约束指的是具体类型必须在某个约束下
比如本例约束为 : new(),也就是说 T 要求是可实例化的
Test t1 = Singleton<Test>.Instance;
Test t2 = new Test();
t1 和 t2 是两个实例. 如果客户不按Singleton<Test>.Instance调用,而是直接new,问题出现了.
本来只能有一个实例的Test,现在出现了两个甚至更多的实例.这难道不算是问题?
@ToString
:)
嗯,要new的话肯定是一个新实例