设计模式-单例模式

为什么要是用单例模式?

有一些对象我们只需要一个,比方说:线程池、缓存、对话框、日志对象,打印机的驱动程序的对象。如果这些对象制造出多个实例的话,会导致很多问题产生,例如:程序的行为异常、资源使用过量或者不一致。

确保一个类只有一个实例,并提供一个全局访问点。

全局变量和单件模式?

全局变量基本上是对对象的静态引用。在使用全局变量时会出现急切实例化和延迟实例化。而单件模式确保类只有一个实例并提供全局访问。全局变量可以提供全局访问,但是不能确保只有一个实例。

饿汉式:

初始时就创建出了单例对象,可以增加线程安全,但是造成资源浪费。

class mySingle
    {
        static mySingle singleLeton = new mySingle();
        private mySingle(){}
        public static  mySingle getInstance()
        {
            return singleLeton;
        }
    }

懒汉式:不安全,在调用获取实例时才进行实例的创建,线程不同调用时可能会出现不同的实例,导致线程不安全。

class mySingle
    {
        static mySingle singleLeton;
        private mySingle(){}
        public static  mySingle getInstance()
        {
            if (singleLeton == null)
                singleLeton = new mySingle();
            return singleLeton;
        }
    }

测试

 static void Main(string[] args)
        {
            mySingle m1 = mySingle.getInstance();
            mySingle m2 = mySingle.getInstance();
            Console.WriteLine(m1 == m2);
            Console.ReadLine();}

输出

True


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值