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

本文共 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,如需转载请自行联系原作者
你可能感兴趣的文章
分布式事务:不过是在一致性、吞吐量和复杂度之间,做一个选择
查看>>
【云图】如何设置支付宝里的家乐福全国连锁店地图?
查看>>
对于json_lib包的使用
查看>>
scala可变长度参数(二)
查看>>
老李分享:qtp自动化测试框架赏析-关键字自动化测试框架 2
查看>>
忙里偷闲 -- 工作随笔
查看>>
springboot报编译失败 Compilation failure
查看>>
Ubuntu下su模式认证失败的问题解决
查看>>
mysqld error(一)
查看>>
Javascript延时函数
查看>>
UML类图关系大全
查看>>
Ant编译Hadoop 1.0.3的eclipse-plugin插件包
查看>>
tensorflow开发环境搭建
查看>>
JDBCRealm Http Digest
查看>>
CentOS 7 网络配置
查看>>
matplotlib 交互式导航
查看>>
eclipse的插件未安装成功
查看>>
由装箱引发的——Integer比较的来龙去脉
查看>>
java 深拷贝
查看>>
UnicodeEncodeError: 'ascii' codec can't encode
查看>>