zoukankan      html  css  js  c++  java
  • 二十四种设计模式:单例模式(Singleton Pattern)

    单例模式(Singleton Pattern)


    介绍
    保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    示例
    保证一个类仅有一个实例。

      

      Singleton

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace Pattern.Singleton
    {
        /// <summary>
        /// 泛型实现单例模式
        /// </summary>
        /// <typeparam name="T">需要实现单例的类</typeparam>
        public class Singleton<T> where T : new()
        {
            /// <summary>
            /// 返回类的实例
            /// </summary>
            public static T Instance
            {
                get { return SingletonCreator.instance; }
            }
    
            class SingletonCreator
            {
                internal static readonly T instance = new T();
            }
        }
    }
    

      Test

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    
    using Pattern.Singleton;
    
    public partial class Singleton : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // 使用单例模式,保证一个类仅有一个实例
            Response.Write(Singleton<Test>.Instance.Time);
            Response.Write("<br />");
            Response.Write(Singleton<Test>.Instance.Time);
            Response.Write("<br />");
    
            // 不用单例模式
            Test t = new Test();
            Response.Write(t.Time);
            Response.Write("<br />");
            Test t2 = new Test();
            Response.Write(t2.Time);
            Response.Write("<br />");
        }
    }
    
    public class Test
    {
        private DateTime _time;
    
        public Test()
        {
            System.Threading.Thread.Sleep(3000);
            _time = DateTime.Now;    
        }
    
        public string Time
        {
            get { return _time.ToString(); }
        }
    }
    

      运行结果
      2007-2-10 22:35:11
      2007-2-10 22:35:11
      2007-2-10 22:35:14
      2007-2-10 22:35:17

  • 相关阅读:
    OpenStack对象存储管理手册(5) OpenStack对象存储系统管理3
    hdu1568Fibonacci
    智能手机中显示信号强度格数
    上篇日本人经营之道 一破坏对手的情绪乱其方寸
    基于Wince的计算器程序
    shell 字符串操作
    轻松记住大端小端的含义
    如何把手机变成你的救生设备
    PM是一个事实
    mysql 5.6 online ddl 测试
  • 原文地址:https://www.cnblogs.com/taotaodetuer/p/6182392.html
Copyright © 2011-2022 走看看