zoukankan      html  css  js  c++  java
  • 分享一个单例模型类Singleton代码

    相关代码:

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Pixysoft.DesignPattern
    {
        
    public class Singleton<T>
        {
            
    private Dictionary<string, T> dict = new Dictionary<string, T>();

            
    private string _id = null;

            
    private static volatile object instance;

            
    private static object syncRoot = new Object();

            
    public static T Instance
            {
                
    get
                {
                    
    if (instance == null)
                    {
                        
    lock (syncRoot)
                        {
                            instance 
    = Activator.CreateInstance(typeof(T));
                        }
                    }

                    
    return (T)instance;

                }
            }

            
    public T this[string id]
            {
                
    get
                {
                    
    //如果是null,表示自己,则直接返回Instance

                    
    if (string.IsNullOrEmpty(id))
                        
    return Instance;

                    id 
    = id.Trim().ToUpper();

                    
    lock (syncRoot)
                    {
                        
    if (dict.ContainsKey(id))
                            
    return dict[id];

                        
    object i = Activator.CreateInstance(typeof(T));

                        ((Singleton
    <T>)i)._id = id;

                        T it 
    = (T)i;

                        dict.Add(id, it);

                        
    return it;
                    }
                }
            }

            
    public T this[int index]
            {
                
    get
                {
                    
    if (index < 0 || index > dict.Keys.Count - 1)
                        
    return Instance;

                    
    int coutner = 0;

                    
    foreach (string key in dict.Keys)
                    {
                        
    if (coutner >= index)
                            
    return dict[key];

                        coutner
    ++;
                    }

                    
    return Instance;

                }
            }

            
    public string SingletonId
            {
                
    get { return _id; }
            }
        }
    }


    使用方法:

        class testclass
        {
            
    private void test()
            {
                Hello.Instance.Test();

                Hello.Instance[
    "id"].Test();
            }
        }

        
    public class Hello : Singleton<Hello>
        {

            
    public void Test()
            {
                Console.Write(
    "hello");
            }
        }

    看看有什么错误等,希望能够指出。

  • 相关阅读:
    记一次在Linux上面启动部署在tomcat服务器的程序
    记一次使用命令行启动部署在tomcat上的应用
    记一次在Eclipse中用Axis生成webservice服务端的过程中出现的问题
    Spring Boot 连接MySql数据库
    Spring Boot入门===Hello World
    Eclipse利用Maven2搭建SpringMVC框架的Web工程
    redis 如何查看所有的key
    ulimit设置内存限制是否有效
    kafka重复数据问题排查记录
    sql update操作结果
  • 原文地址:https://www.cnblogs.com/wwwzzg168/p/3565191.html
Copyright © 2011-2022 走看看