单例设计模式
来源:互联网 发布:傲剑弓箭升级数据 编辑:程序博客网 时间:2024/06/01 20:24
通过一些程序设计模式的书籍,再结合网上各位大腿的详细分析,简单通俗的理解,单例是应用在一个程序内只允许某个类只存在一个实例的设计思想。
例如日志,对于一个程序来说,往往只需要一个日志实例。
了解单例的的应用情形,接下来对单例进行详细的设计说明
1,创建类
public class Singleton { private int u;//定义一个变量,做测试验证 private static Singleton uniqueInstance;//定义变量,当部调用GetInstance()时保存类的实例 private static readonly object locker = new object(); public void dosomething()//类外部需要访问的方法需要设为公有 { u++; Console.WriteLine(uuu); } private Singleton()//构造函数设置为私有,外部就只能通过GetInstance()来访问类并创建实例 {} public static Singleton GetInstance()//定义对外创建实例接口的方法 { if (uniqueInstance == null)//进行判断 { lock (locker)//仿真多个线程同时访问出现异常情况,当有一个线程访问,则锁住,其他线程暂时挂起。 { if (uniqueInstance == null) { uniqueInstance = new Singleton(); //创建实例 } } } return uniqueInstance;//返回实例 } }
2,其他类调用
class Program { static void Main(string[] args) { Singleton u1 = Singleton.GetInstance();//创建实例1 Singleton u2 = Singleton.GetInstance();//创建实例2 Console.WriteLine(u1 == u2);//判断实例1是否等于实例2 u1.dosomething();//调用实例方法 u2.dosomething();//调用实例方法 Console.ReadKey(); } }
3,输出结果
true
1
2
总结:从输出结果看,u1等于u2,实例变量u在u1,u2调用的函数累加产生叠加的变化,证明u1和u2是同一个实例
阅读全文
0 0
- 设计模式--单例
- 单例设计模式
- 设计模式----单例
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 设计模式-单例
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- jenkins 构建打包android app
- 阶乘取模预处理
- 程序员如何成为别人的男朋友
- EventBus 的使用方法
- go语言学习及json学习
- 单例设计模式
- c++11新特性
- Easyui-ComboTree数据填充,递归。树形节点
- NYOJ题目37-回文字符串
- C++输出数据到TXT文档中
- Nginx 405 method not alllowed
- 应届毕业生迟迟找不到工作,是否因为自视太高?怎样调整找工作的心态?
- jquery自定义函数的多种方法
- Linux系统下JAVA环境配置