csharp设计方法


public class hugryman

私有构造

private hugryman()

私有静态只读实例化

private static readonly hugryman _hugryman=new hugryman();

公有静态读取方法

public static hugryman()

return _hungryman

多次获取的是同一个实例

gethashcode发现是同一个对象

数值一样



缺点

一开始就实例化 浪费性能




改懒汉式

layman

私有构造

私有静态字段

private static _layman

公有静态读取同时实例化

在getlazyman里面实例化

null的时候创建 防止多次实例化

(都要静态)



缺点

会重复创建

如果多个程序同时进入,会实例化多次

重复实例化的缺点

改进方法:

var obj=new object()

lock(obj)

{

}

花括号的内容只允许一个线程进行

例子

private static layman _layman

public static layman getlazyman()

lock(o){

if (_layman==NULL)

{_lazyman=new lazyman()}

}

return _layman

lock实际上是

monitor.enter()

monitor.exit()

防止指针重排的方法

volatile



饿汉式的改造方法

静态内部类

hugrymanstatic

private hungrymanstatic()

private static class innerclass()

{

var _hungrymanstatic=new hungrymanstatic()

}

public static Gethungrymanstatic()

{

return _hungrymanstatuc

}

静态内部类 只在类加载的时候创建一次实例

不会浪费资源



相关推荐
kaikaile19959 小时前
数字全息图处理系统(C# 实现)
开发语言·c#
wearegogog12314 小时前
C# .NET 文件比较工具 WinForms
开发语言·c#·.net
糖不吃15 小时前
WPF值转换器
c#
Popeye-lxw16 小时前
由罗技 K380 键盘 FN 键模式切换引发的血案
c#
FL162386312916 小时前
C# OpenCvSharp 基于霍夫变换直线检测的文本图像倾斜校正文本图像倾斜校
开发语言·c#
aini_lovee18 小时前
C# 快递单打印系统(万能套打系统)
开发语言·c#
白菜上路18 小时前
C# Serilog.AspNetCore基本使用
c#·serilog
小白不白11118 小时前
C# WinForm 与 VP 二次开发
开发语言·c#
SunnyDays101119 小时前
如何使用 C# 自动调整 Excel 行高和列宽
开发语言·c#·excel
itgather20 小时前
OfficeExcel — Word / Excel DLL 验证台功能介绍
c#·word·excel