c# 不同单例的不同意义
c# 不同 单例 意义
2023-09-14 09:01:09 时间
前言
在c#,可能有很多五花八门的单例给你选择,分什么懒汉模式等等什么模式,其实不同的写法对程序是有一定影响的。
正文
为什么需要单例呢?其实我们自己是可以控制单例的,只是单例模式给了我们一个好的设计。
我想没有会下面这样写:
void main()
{
var obj=new good();
obj.show();
var obj=new good();
obj.show();
}
但是有可能下面这样写:
public class a
{
public void showa()
{
var obj=new good();
obj.show();
}
}
public class b
{
public void showb()
{
var obj=new good();
obj.show();
}
}
void main()
{
var a=new a();
a.showa();
var b=new b();
b.showb();
}
这时候可能就浪费资源了,单例模式给了我们一个好的设计。
有下面几种方式:
方式一
public class good{
private good(){
do some thing
}
private good __good;
private static object lockobj=new object();
public good createinstance()
{
if(__good==null)
{
lock(lockobj)
{
if(__good==null)
{
__good=new good();
}
}
}
}
}
方式二
public class good{
private good(){
do some thing
}
private static good __good=new good();
public good createinstance()
{
return __good;
}
}
方式三
public class good{
private good(){
do some thing
}
private good __good;
private static good()
{
__good=new good();
}
public good createinstance()
{
return __good;
}
}
不同之处
第一种是普通模式。
用完了资源就会被cg释放。
第二种和第三种会一直存在内存中,由clr控制。
相关文章
- C# 系统应用之使用Pancel控件同一窗体切换页面
- 学习C#,重温VB
- C#基础知识-对象初始化顺序
- Win10系列:C#应用控件基础9
- C#.NET常见问题(FAQ)-如何在不同窗体之间传递值
- C#.NET常见问题(FAQ)-如何使用变量访问控件属性
- C#.NET常见问题(FAQ)-程序如何把窗体文件从从一个项目中复制到另一个项目
- C#设计模式——组合模式(Composite Pattern)
- c# 不同单例的不同意义
- 重学c#系列——订阅发布与事件[二十六]
- c# 优化代码的一些规则——判断null值得不同写法[六]
- Atitit.得到网络邻居列表java php c#.net python
- Atitit.加密算法 des aes 各个语言不同的原理与解决方案java php c#
- Atitit.加密算法 des aes 各个语言不同的原理与解决方案java php c#
- c#透明TextBox
- C#中的Partial
- C# MessageBox 用法大全(转)
- C# 中的CTS, CLS, CLR 的理解
- 【UiPath2022+C#】UiPathExcel 和数据表