python之单例模式

#! /usr/bin/env python
# -*- coding:utf-8 -*-

#单例模式 通过定义一个私有的类的静态变量和一个获取对象的接口
#为什么需要单例模式 例如我们穿件了一个数据库连接池对象,该对象每次创建时,创建多个连接对象,我们只需要为外部提供一个
# 获取连接对象的接口,这时我们只希望这个类只生成一个对象,而不希望该类创建多个对象耗费过多的资源
#即单例模式应用场景大致为类的数据内容相同时,我们只需要调用相关的接口来实现对应的功能,一个实例便可以解决我们的需求。

"""
c++ 中的单例模式
1.我们只希望有一个实例,可以将类的构造函数声明为私有的,让外部无法继续实例化
2.用来记录是否存在类的对象
3.位外部提供一个接口用于获取创建的实例
class One
{
private:
    One();
    static One obj;
public:
    static One getObj()
    {
        if(obj == NULL)
            obj = new One();
        return obj;
    }
}
"""

"""
python实现单例模式
思想:与c++实现类似,定义了一个静态变量和一个静态方法作为接口
"""

class SingleCls:
    __instance = None
    def __init__(self):
        pass

    @staticmethod
    def get_instance():
        if SingleCls.__instance == None:
            SingleCls.__instance = SingleCls()
            return SingleCls.__instance
        else:
            return SingleCls.__instance


obj1 = SingleCls.get_instance()
print(obj1)
obj2 = SingleCls.get_instance()
print(obj2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值