单例模式

来源:互联网 发布:淘宝云客服没有了 编辑:程序博客网 时间:2024/06/05 20:26


主要优点:

1、提供了对唯一实例的受控访问。

2、由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。

3、允许可变数目的实例。

 

主要缺点:

1、由于单利模式中没有抽象层,因此单例类的扩展有很大的困难。

2、单例类的职责过重,在一定程度上违背了“单一职责原则”。

3、滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;如果实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
using System.Configuration;
namespace yjzcjing
{
    class Singleton
    {
        private static Singleton instance;//创建静态对象,程序未结束之前不会销毁,为下面的对比留下了伏笔
        private Singleton()//静态构造方法,这就使得,外界不能用new来新建一个该对象
        {

        }
        public static Singleton GetInstance()
        {
            if (instance == null)//如果对象时空,则新建,否则返回已经有的。该方法也是唯一的创建实例的方法。也保证了创建的对象是唯一的。
            {
                instance = new Singleton();
            }
            return instance;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Singleton s1 = Singleton.GetInstance();//生成对象1,因为第一次instance为空
            Singleton s2 = Singleton.GetInstance();//还是之前的对象,返回instance
            if(s1==s2)//比较是否相同,结果是相同的
            {
                Console.WriteLine("两个对象是相同的");
            }
            Console.Read();
        }
    }
}


0 0
原创粉丝点击