单例模式的理解与使用

最近工作中使用到了单例模式,对单例模式有了一些新的理解,将其记录下来。

什么是单例模式及其作用?

单例模式为一种简单的设计模式,是为了控制某个类型的实例唯一性,你需要多次用到,但是又不希望多次去new他。
例如一些公共类,需要常常使用又不需要扩展更改的类都可以使用单例模式,这样能够保证访问的实例都是同一个,节约资源,避免对共享资源的多重占用。
下面代码为单例模式的实现,加锁的目的是因为可能导致线程不安全,从而破坏单例模式。

// An highlighted block
public static class Singleton
{
    private static Singleton instance = null;
    private static readonly object padlock = new object();

    Singleton()
    {
    }

    public static Singleton Instance
    {
        get
        {
            lock (padlock)
            {
            //如果不加锁,可能两个线程进来instance 都为空,那么就会导致创建两个实例
                if (instance == null)
                {
                    instance = new Singleton();
                }
                return instance;
            }
        }
    }
};

使用时即可Singleton.Instance即可

作用

单例模式就是保证在整个应用程序的生命周期中,在任何时刻,被指定的类只有一个实例,并为客户程序提供一个获取该实例的全局访问点。

单例模式的应用场景。

以最近使用到的为例,最近有一个需求,我作为客户端需要定时给服务端发数据,因此我的TCP是每一次需要发的时候去连,发送完成之后再关掉。这时有个新的需求,服务端需要通过这个连接给我发请求,让我给他返回其他数据。这时就可以把连接写成一个单例,由于TCP本来就是长连接,故只需要在单例中进行连接,连上后不去close他,那就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值