欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

设计模式-单例模式

程序员文章站 2024-03-01 09:01:52
...

为什么要是用单例模式?

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

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

全局变量和单件模式?

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

饿汉式:

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

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


相关标签: 读书