博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
乐在其中设计模式(C#) - 单例模式(Singleton Pattern)
阅读量:6893 次
发布时间:2019-06-27

本文共 1589 字,大约阅读时间需要 5 分钟。




乐在其中设计模式(C#) - 单例模式(Singleton Pattern)
作者:
介绍
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
示例
保证一个类仅有一个实例。
Singleton
InBlock.gif
using System; 

InBlock.gif
using System.Collections.Generic; 

InBlock.gif
using System.Text; 

InBlock.gif 

InBlock.gif
namespace Pattern.Singleton 

InBlock.gif

InBlock.gif        
/// <summary> 

InBlock.gif        
/// 泛型实现单例模式 

InBlock.gif        
/// </summary> 

InBlock.gif        
/// <typeparam name="T">需要实现单例的类</typeparam> 

InBlock.gif        
public 
class Singleton<T> where T : 
new() 

InBlock.gif        { 

InBlock.gif                
/// <summary> 

InBlock.gif                
/// 返回类的实例 

InBlock.gif                
/// </summary> 

InBlock.gif                
public 
static T Instance 

InBlock.gif                { 

InBlock.gif                        get { 
return SingletonCreator.instance; } 

InBlock.gif                } 

InBlock.gif 

InBlock.gif                
class SingletonCreator 

InBlock.gif                { 

InBlock.gif                        
internal 
static 
readonly T instance = 
new T(); 

InBlock.gif                } 

InBlock.gif        } 

InBlock.gif}
 
Test
InBlock.gif
using System; 

InBlock.gif
using System.Data; 

InBlock.gif
using System.Configuration; 

InBlock.gif
using System.Collections; 

InBlock.gif
using System.Web; 

InBlock.gif
using System.Web.Security; 

InBlock.gif
using System.Web.UI; 

InBlock.gif
using System.Web.UI.WebControls; 

InBlock.gif
using System.Web.UI.WebControls.WebParts; 

InBlock.gif
using System.Web.UI.HtmlControls; 

InBlock.gif 

InBlock.gif
using Pattern.Singleton; 

InBlock.gif 

InBlock.gif
public partial 
class Singleton : System.Web.UI.Page 

InBlock.gif

InBlock.gif        
protected 
void Page_Load(
object sender, EventArgs e) 

InBlock.gif        { 

InBlock.gif                
// 使用单例模式,保证一个类仅有一个实例 

InBlock.gif                Response.Write(Singleton<Test>.Instance.Time); 

InBlock.gif                Response.Write(
"<br />"); 

InBlock.gif                Response.Write(Singleton<Test>.Instance.Time); 

InBlock.gif                Response.Write(
"<br />"); 

InBlock.gif 

InBlock.gif                
// 不用单例模式 

InBlock.gif                Test t = 
new Test(); 

InBlock.gif                Response.Write(t.Time); 

InBlock.gif                Response.Write(
"<br />"); 

InBlock.gif                Test t2 = 
new Test(); 

InBlock.gif                Response.Write(t2.Time); 

InBlock.gif                Response.Write(
"<br />"); 

InBlock.gif        } 

InBlock.gif

InBlock.gif 

InBlock.gif
public 
class Test 

InBlock.gif

InBlock.gif        
private DateTime _time; 

InBlock.gif 

InBlock.gif        
public Test() 

InBlock.gif        { 

InBlock.gif                System.Threading.Thread.Sleep(3000); 

InBlock.gif                _time = DateTime.Now;         

InBlock.gif        } 

InBlock.gif 

InBlock.gif        
public 
string Time 

InBlock.gif        { 

InBlock.gif                get { 
return _time.ToString(); } 

InBlock.gif        } 

InBlock.gif}
 
 
运行结果
2007-2-10 22:35:11
2007-2-10 22:35:11
2007-2-10 22:35:14
2007-2-10 22:35:17


参考



OK
 
 
 
     本文转自webabcd 51CTO博客,原文链接:http://blog.51cto.com/webabcd/344515,如需转载请自行联系原作者
你可能感兴趣的文章
创建windows服务
查看>>
用main函数传参做简单的计算器的代码
查看>>
python中struct.unpack的用法
查看>>
PAT (Advanced Level) 1107. Social Clusters (30)
查看>>
【开源社群系统研发日记五】ThinkSNS+ 是如何计算字符显示长度的
查看>>
Nodejs日志管理log4js
查看>>
海康威视 - 萤石云开放平台 js 版
查看>>
关于分销平台
查看>>
jquery实用的一些方法
查看>>
质数方阵
查看>>
jQuery $.each用法
查看>>
C语言结构体指针成员强制类型转换
查看>>
基于域的无线安全认证方案
查看>>
Thread类常用方法
查看>>
路由重分布新技术实现多种路由协议不同网络间通信案例实操应用
查看>>
3月31日云栖精选夜读:数据科学咨询:想要转型毫无头绪?看了本文你不慌
查看>>
程序猿日记S01E03
查看>>
如何解决域名解析不生效问题?
查看>>
字符串指针修改问题
查看>>
通过JCONSOLE监控TOMCAT的JVM使用情况
查看>>