首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
大数据
›
数据仓库与分析
›
浅谈单例模式
返回列表
发新帖
浅谈单例模式
[复制链接]
发表于 2025-11-6 08:37:12
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
前言
什么是单例模式?
单例模式,属于创建范例的一种常用的软件计划模式。通过单例模式的方法创建的类在当进步程中只有一个实例(根据须要,也有大概一个线程中属于单例,如:仅线程上下文内利用同一个实例)
上面是百度百科给出的表明。
各人都知道,面向对象的头脑就是我们可以把一个类实例许多次,每次实例出来的都是一个对象,意味着你可以创建许多个基于这个类的对象。
单例模式,说白了,就是这些对象本质都是同一个,整个步调中,不管在那里用,利用的都是同一个实例对象。
如果我们创建了一个China类,我们可以不停new吗?不可以,由于天下上只有一个China,以是我们利用的都是同一个China对象。
Version 1 - 非线程
安全
public class China
{
private China()
{
}
private static China china = null;
public static China Instance
{
get
{
if (china == null)
{
Console.WriteLine("实例化对象");
china = new China();
}
return china;
}
}
}
复制
代码
最简单的实现方式如上图,创建一个私有的静态对象和私有构造方法,然后在CreateInstance方法里,加一个判定,如果为Null,就重新实例化一下,否则直接返回。
这种写法从逻辑上是没题目标,但是是否会出现这个if (china == null)判定,同时实行,如许就贫困了。
以是这种写法在单线程的步调是没题目标,但是在多线程中,是大概会有题目标。
我们做个测试,测试
代码
如下:
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
new TaskFactory()
复制
代码
回复
使用道具
举报
返回列表
浏览过的版块
SAAS
容器及微服务
DevOps与敏捷开发
Oracle
美食家大橙子
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表