设计模式一(单例模式)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式一(单例模式)相关的知识,希望对你有一定的参考价值。
单例模式:所谓单例模式就是确保类只有一个对象,并提供一个公共的访问接口。下面根据概念分析单例模式。
1、确保一个实例,就是不让程序随处可以new一个对象,这个怎么实现呢?运用私有构造函数。
public class Singleton { private Singleton() { } }
这样Singleton就不能new对象了。
2、唯一的对象在何处?在内部定义一个静态的Singleton对象,为什么要定义静态的呢,因为静态对象属于类。然后提供一个公共的访问接口即可
public class Singleton { private Singleton() { } private static Singleton singleton; public static Singleton GetInstance() { if(singleton==null) { singleton=new Singletion(); } return singleton; } }
单例模式就算完成了,但是这里存在个问题,对于多线程,可能同时存在几个线程同时走到if(singleton==null)这儿,这样就会new出多个singleton实例,这也不能保证其唯一。对于这种多线程的情况,我们可以加进程锁机制,确保在判断这儿只会有一个线程访问,改进如下:
public class Singleton { private Singleton() { } private static Singleton singleton; //线程锁 private static readonly object lockObj=new object(); public static Singleton GetInstance() { //双重判断是为了提高性能 if(singleton==null) { lock(lockObj) { if(singletion==null) { singleton=new Singletion(); } } } return singleton; } }
以上是关于设计模式一(单例模式)的主要内容,如果未能解决你的问题,请参考以下文章