单例模式,一个类只能有一个实例。地球只有一个。

单例设计模式:

单例设计模式就是保证某个类的实例有且只能有一个不能随意创建实例。例如:我们只有一个地球,地球类的实例只能创建一个。

1、为了阻止类实例的new创建,可以做一个private的构造函数。

2、既然不能从外部使用new进行实例的创建,就从类内部进行实例的创建,为此可以提供一个静态方法和一个要创建的私有全局类实例变量。

3、静态方法实现如下:

/// <summary>
    /// 单例模式
    /// </summary>
    public class SingleC
    {

// 定义一个标识确保线程同步
        private static readonly object locker = new object();
 // 定义一个静态变量来保存类的实例
        private static SingleC uniqueCInstance;
        // 定义私有构造函数这样外界不能创建该类实例
        private SingleC()
        {
        }

        /// <summary>
        /// 定义公有方法提供一个全局访问,也可以定义公有属性来提供全局访问
        /// </summary>
        /// <returns></returns>
        public static SingleC GetCInstance()
        {

if (uniqueCInstance== null)
            {
                lock (locker)
                {
            // 如果类的实例不存在则创建,否则直接返回
            if (uniqueCInstance== null)
            {
                uniqueCInstance= new SingleC();
            }
}
}
            return uniqueCInstance;
        }
    }

4、上例中使用了lock锁,防止多线程同时调动时if (uniqueCInstance== null)都可以通过,如果都可以就会有两次实例的创建动作。第一个if (uniqueCInstance== null)是为了一旦实例被创建了就不需要再使用lock阻止因多线程导致多个实例出现。

大神们不喜勿喷,仅作为自我学习笔记!!!

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值