zoukankan      html  css  js  c++  java
  • 单列模式(泛型版)

    View Code
     public static class SingletonProvider<T> where T : new()
        {
            
    private static T m_instance;
            
    private static readonly object sync = new object();
            
    /// <summary>
            
    /// 不够构造函数的泛型单列
            
    /// </summary>
            public static T Instance
            {
                
    get
                {
                    
    if (m_instance == null)
                    {
                        
    lock (sync)
                        {
                            
    if (m_instance == null)
                            {
                                
    try
                                {
                                    m_instance 
    = new T();
                                }
                                
    catch
                                {
                                }
                            }
                        }
                    }
                    
    return m_instance;
                }
            }
            
    /// <summary>
            
    /// 带构造函数的泛型单列模式
            
    /// </summary> 
            public static T InstanceForParameter(params object[] objarr)
            {

                
    if (m_instance == null)
                {
                    
    lock (sync)
                    {
                        
    if (m_instance == null)
                        {
                            var t 
    = typeof(T);
                            var tp 
    = new Type[objarr.Length];
                            
    for (int i = 0; i < objarr.Length; i++)
                            {
                                tp[i] 
    = objarr[i].GetType();
                            }
                            
    try
                            {
                                System.Reflection.ConstructorInfo ci 
    = t.GetConstructor(tp);
                                m_instance 
    = (T)ci.Invoke(objarr);
                            }
                            
    catch
                            {
                            }

                        }
                    }
                }
                
    return m_instance;
            }
        }
  • 相关阅读:
    JavaScript 学习笔记之最终篇
    JavaScript 学习笔记(三)
    JavaScript 学习笔记(一)
    JAVA 多线程机制(二)
    JAVA 多线程机制(一)
    apache配置CA证书通过https通信
    httpd的一些知识点
    Elasticsearch安装图形化界面工具Head插件
    Logstash收集nginx访问日志和错误日志
    lvm管理卷之缩减卷大小
  • 原文地址:https://www.cnblogs.com/jacd/p/1771136.html
Copyright © 2011-2022 走看看