设计模式学习笔记二——Singleton模式

意图:出于某种目的(如性能考虑、逻辑性要求)要求一个类的实例只能有N个

应用:抽象工厂模式中的工厂类、对象池

namespace  DesignPattern.Singleton
{
    
// 单线程
    public class SingleThread
    
{
        
private static SingleThread instance;

        
private SingleThread()
        
{
        }


        
public static SingleThread Instance
        
{
            
get
            
{
                
if (instance == null)
                
{
                    instance 
= new SingleThread();
                }

                
return instance;
            }

        }


        
// 使用.NET静态对象实例化机制以如下一行代码实现,此方式简单,但是不能在构造函数中进行初始化处理,当然可以通过调用自定义方法初始化。
        
// public static readonly SingleThread Instance = new SingleThread();
    }


    
// 多线程
    public class MultiThread
    
{
        
private static volatile MultiThread instance;
        
private static object obj = new object();

        
private MultiThread()
        
{
        }


        
public static MultiThread Instance
        
{
            
get
            
{
                
if (instance == null)
                
{
                    
lock (obj)
                    
{
                        
if (instance == null)
                        
{
                            instance 
= new MultiThread();
                        }

                    }

                }

                
return instance;
            }

        }

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值