首页 新闻 会员 周边 捐助

单例模式如何传参数?

0
悬赏园豆:5 [已关闭问题] 解决于 2012-07-17 10:02

单例模式有种写法如下:

public sealed class Singleton
{
        private static readonly Singleton m_Instance = new Singleton();
        private Singleton()
        {
        }

        public static Singleton GetInstance()
        {
            return m_Instance;
        }
}

如果在实例化(new Singleton())时要传递参数怎么办?

草根程序猿的主页 草根程序猿 | 初学一级 | 园豆:129
提问于:2012-07-16 13:11
< >
分享
其他回答(6)
1

那你就传呗....

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-07-16 13:18

给我-1的哥们,那你说该怎么办啊。。。

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-07-16 13:30
4

我喜欢单例,也是我学会的第一个模式,就是到现在还从来没想过给单例传参数。

如果每次调用一个实例都需要参数那应该不适用单例了;

收获园豆:5
today4king | 园豆:3499 (老鸟四级) | 2012-07-16 13:21

人家也没说每次调用都要参数啊。。只是初始化的时候传个参数呗。

支持(1) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-07-16 13:29
1
public sealed class Singleton
{
        private static Singleton m_Instance;
        
        private Singleton(string value)
        {
        }

        public static Singleton GetInstance(string value)
        {
            if(m_Instance == null)
            {
                 m_Instance = new Singleton(value);
             }
             return m_Instance;
        }
}
dudu | 园豆:29568 (高人七级) | 2012-07-16 13:38

dudu老大,这样的有待商榷啊。。单例还有线程安全的角度上来考虑,怎么感觉不大靠谱啊。

支持(0) 反对(0) ````` | 园豆:14268 (专家六级) | 2012-07-17 09:43

@imfunny: 静态方法是线程安全的

支持(0) 反对(1) dudu | 园豆:29568 (高人七级) | 2012-07-17 10:31

这样不好吧,如果m_Instance已存在,再传value也没用了。

支持(2) 反对(0) lambert_li | 园豆:208 (菜鸟二级) | 2012-07-17 16:57
1

不要 用 你的实现方法,最少 可以用dudu的。也可以用双double

無限遐想 | 园豆:3740 (老鸟四级) | 2012-07-16 13:45
0

只有一个实例,用属性不是更好吗?

Tom.汤 | 园豆:3060 (老鸟四级) | 2012-07-16 13:51
0

声明一个 带参数的构造函数 就行了

private static readonly Singleton m_Instance = new Singleton(1);

Qlin | 园豆:2403 (老鸟四级) | 2012-07-16 17:29
1

即便参数化,也是返回第一次创建的对象,之后传参感觉没意义;如果想针对每个参数创建一个对象,建议考虑用hashtable来实现

luojianlei | 园豆:202 (菜鸟二级) | 2015-04-16 10:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册