zoukankan      html  css  js  c++  java
  • c# 不同单例的不同意义

    前言

    在c#,可能有很多五花八门的单例给你选择,分什么懒汉模式等等什么模式,其实不同的写法对程序是有一定影响的。

    正文

    为什么需要单例呢?其实我们自己是可以控制单例的,只是单例模式给了我们一个好的设计。

    我想没有会下面这样写:

    void main()
    {
      var obj=new good();
      obj.show();
      var obj=new good();
      obj.show();
    }
    

    但是有可能下面这样写:

    public class a
    {
       public void showa()
       {
         var obj=new good();
         obj.show();
       }
    }
    
    public class b
    {
       public void showb()
       {
         var obj=new good();
         obj.show();
       }
    }
    
    void main()
    {
      var a=new a();
      a.showa();
      var b=new b();
      b.showb();
    }
    

    这时候可能就浪费资源了,单例模式给了我们一个好的设计。

    有下面几种方式:

    方式一
    public class good{
        private good(){
            do some thing
        }
        private good __good;
        private static object lockobj=new object();
        public good createinstance()
        {
            if(__good==null)
            {
                lock(lockobj)
                {
                    if(__good==null)
                      {
                        __good=new good();
                      }
                }
            }
        }
    }
    

    方式二

    public class good{
        private good(){
            do some thing
        }
        private static good __good=new good();
        public good createinstance()
        {
            return  __good;
        }
    }
    

    方式三

    public class good{
        private good(){
            do some thing
        }
        private good __good;
        private static good()
        {
            __good=new good();
        }
    
        public good createinstance()
        {
            return  __good;
        }
    }
    

    不同之处

    第一种是普通模式。

    用完了资源就会被cg释放。

    第二种和第三种会一直存在内存中,由clr控制。

  • 相关阅读:
    Vue-router 路由
    第一个Vue-cli
    webpack学习
    kail拦截自己局域网
    kaii在普通用户进入root的时候,使用''su '',出现鉴定故障
    Kali Linux缺少ifconfig命令
    SpringIOC
    JavaScript图形实例:太极图
    JavaScript图形实例:玩转正方形
    JavaScript图形实例:模仿海龟作图
  • 原文地址:https://www.cnblogs.com/aoximin/p/13121884.html
Copyright © 2011-2022 走看看