Head First 设计模式之单件模式(Singleton Pattern)

Posted 墨遥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Head First 设计模式之单件模式(Singleton Pattern)相关的知识,希望对你有一定的参考价值。

 

1.   单件模式的经典实现

publicclass Singleton
    
        private static SingletonuniqueInstance;
        private Singleton()  
        public static Singleton GetInstance()
        
            if (uniqueInstance == null)
                uniqueInstance = newSingleton();
            return uniqueInstance;
        
    


2.   定义单件模式

单件模式确保一个类只有一个实例,并且提供一个全局的访问点。

把某个类设计成自己管理的一个单独实例,避免其他类再自行产生实例,只能通过单件类获取单件实例

对该实例提供全局的访问点,当需要实例时,向类查询,会返回单个实例。

类图:

3.   处理多线程

使用线程锁

publicclass Singleton
    
        private static Singleton uniqueInstance;
        private static object obj = new object();
        private Singleton()  
        public static Singleton GetInstance()
        
            if (uniqueInstance == null)
            
                lock (obj)
                
                    if (uniqueInstance == null)
                        uniqueInstance = new Singleton();
                
            
                return uniqueInstance;
        
    

使用“急切”创建实例,而不用延迟实例化的做法

public class Singleton
    
        private staticSingleton uniqueInstance new Singleton();//在静态的初始化器中创建单件
        private Singleton()  
        public static Singleton GetInstance()
                  
            return uniqueInstance;
        

4.   总结

l  单件模式确保程序中一个类最多只有一个实例。

l  单件模式也提供访问这个实例的全局点。

l  确定在性能和资源上的限制,小心选择适合的方案来实现单件,以解决多线程问题。

 

以上是关于Head First 设计模式之单件模式(Singleton Pattern)的主要内容,如果未能解决你的问题,请参考以下文章

Head First设计模式之原型模式

Head First设计模式之代理模式

Head First 设计模式之模板方法模式

Head First设计模式之组合模式

《Head First 设计模式》之代理模式

《Head First 设计模式》之工厂模式