分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

单例模式 net

发布时间:2023-09-06 01:18责任编辑:顾先生关键词:暂无标签

最近用到了单例模式,以下是个人理解,如有不对的请各路大神指点

1.简介:单例模式严格定义一个类只有一个实例,并提供一个他的全局访问点。

2.解决问题:当一个类只是要求可以创建一个实例时,需要使用单例模式。

3.构成:由一个私有变量,一个私有构造函数和一个公共的方法构成。

4.实例:

public ?class Singleton ???{ ????/// <summary> ???/// 程序运行时,创建一个静态只读的进程辅助对象 ???/// </summary> ????private static readonly object _object=new object(); ???/// <summary> ???/// 构造方法私有,外键不能通过New类实例化此类 ???/// </summary> ???????private static Singleton instance; ???????????//私有构造方法Singleton(),外界不能使用new关键字来创建此类的实例了。 ???????private Singleton() { } ??????????/// <summary> ???/// 此方法是本类实例的唯一全局访问点 ???/// (双重加锁 Double-Check Locking) ???/// </summary> ???/// <returns></returns> ???????public static Singleton GetInstance() ???????{ ??????????//先判断实例是否存在,不存在再加锁处理 ???????????if (instance==null) ???????????{ ???????????????//在同一时刻加了锁的那部分程序只有一个线程可以进入, ???????????????lock (_object) ???????????????{ ????????????????????//如实例不存在,则New一个新实例,否则返回已有实例 ???????????????????if (instance==null) ???????????????????{ ???????????????????????instance = new Singleton(); ???????????????????} ???????????????} ????????????????????????????????????????????} ???????????return instance; ???????} ???}客户端调用: ?class Program ???{ ???????static void Main(string[] args) ???????{ ???????????var singleton1 = Singleton.GetInstance(); ???????????var singleton2 = Singleton.GetInstance(); ???????????if (singleton1==singleton2) ???????????{ ???????????????Console.WriteLine("2个实例相同"); ???????????} ???????????Console.ReadKey(); ???????} ???}

  

单例模式 net

原文地址:http://www.cnblogs.com/mili3/p/7675711.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved