http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 2085|回复: 4

[学习心得] C#单列模式

[复制链接]
发表于 2018-12-27 15:46:28 | 显示全部楼层 |阅读模式
一 、  单例 (Singleton ) 模式

单例模式的特点:

  单例类只能有一个实例。

  单例类必须自己创建自己的唯一实例。

  单例类必须给所有其它对象提供这一实例。

单例模式应用:

  每台计算机可以有若干个打印机,但只能有一个 Printer Spooler,避免两个打印作业同时输出到打印机。

  一个具有自动编号主键的表可以有多个用户同时使用,但数据库中只能有一个地方分配下一个主键编号。否则会出现主键重复。

二 、 Singleton  模式的结构 :

1.png

Singleton 模式包含的角色只有一个,就是 Singleton。Singleton 拥有一个私有构造函数,确保用户无法通过

new 直接实例它。除此之外,该模式中包含一个静态私有成员变量 instance 与静态公有方法 Instance()。

Instance 方法负责检验并实例化自己,然后存储在静态成员变量中,以确保只有一个实例被创建。(关于线程
问题以及 C#所特有的 Singleton 将在后面详细论述)。

三 、  程序举例 :

该程序演示了 Singleton 的结构,本身不具有任何实际价值。

[C#] 纯文本查看 复制代码
// Singleton pattern -- Structural example
using System;
// "Singleton"
class Singleton
{
// Fields
private static Singleton instance;
// Constructor
protected Singleton() {}
// Methods
public static Singleton Instance()
{
// Uses "Lazy initialization"
if( instance == null )
instance = new Singleton();
return instance;
}
}
/// <summary>
/// Client test
/// </summary>
public class Client
{
public static void Main()
{
// Constructor is protected -- cannot use new
Singleton s1 = Singleton.Instance();
Singleton s2 = Singleton.Instance();
if( s1 == s2 )
Console.WriteLine( "The same instance" );
}
}



四 、  在什么情形下使用单例模式 :

使用 Singleton 模式有一个必要条件:在一个系统要求一个类只有一个实例时才应当使用单例模式。反过来,
如果一个类可以有几个实例共存,就不要使用单例模式。

注意:

不要使用单例模式存取全局变量。这违背了单例模式的用意,最好放到对应类的静态成员中。

不要将数据库连接做成单例,因为一个系统可能会与数据库有多个连接,并且在有连接池的情况下,应当尽可能

及时释放连接。Singleton 模式由于使用静态成员存储类实例,所以可能会造成资源无法及时释放,带来问题。



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2018-12-27 16:17:32 | 显示全部楼层
强烈支持楼主ing……
发表于 2018-12-27 17:03:16 | 显示全部楼层
看到这帖子真是高兴!
发表于 2018-12-27 18:54:07 | 显示全部楼层
我只是路过打酱油的。
发表于 2018-12-28 12:29:22 | 显示全部楼层
强烈支持楼主ing……
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-3 16:38

© 2014-2021

快速回复 返回顶部 返回列表