设计模式-单例模式

梦想的初衷 提交于 2020-01-12 06:45:32

为什么要是用单例模式?

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

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

全局变量和单件模式?

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

饿汉式:

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

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


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!