当前位置: 首页 > news >正文

织梦体育网站模板百度网络小说排行榜

织梦体育网站模板,百度网络小说排行榜,网站建设的任务,钉子wordpress主题【一】为什么要单例模式 单例设计模式: 一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。 当一个类的功能比较单一,只需要一个实例…

【一】为什么要单例模式

单例设计模式:

  • 一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。

  • 当一个类的功能比较单一,只需要一个实例对象就可以完成需求时,就可以使用单例模式来节省内存资源。

【二】如何实现一个单例

  • 要实现一个单例,我们需要知道要重点关注的点是哪些?

    • 考虑对象创建时的线程安全问题

    • 考虑是否支持延迟加载

    • 考虑获取实例的性能是否高(是否加锁)

  • 在python中,我们可以使用多种方法来实现单例模式

    • 使用模块

    • 使用装饰器

    • 使用类(方法)

    • 基于__new__方法实现

    • 基于元类metaclass实现

# 创建一个普通的类
class Student:...
​
​
# 实例化类得到对象 --- 类只要加 () 实例化就会产生一个全新的对象
# 查看对象  --- 发现虽然是同一个类实例化得到的对象,但是对象的地址不一样
# 每次使用都要重新打开,内存占用过高
stu_one = Student()
print(id(stu_one))  # 1764834580640
stu_two = Student()
print(id(stu_two))  # 1764834304080

单例模式的实现

# 方式一:
class MyType(type):def __init__(cls,class_name,class_bases,class_name_space):# 给自己的类中加一个属性 instance 初始值是nonecls.instance = Nonesuper().__init__(class_name,class_bases,class_name_space)
​def __call__(self, *args, **kwargs):obj = super().__call__(*args,**kwargs)# 判断 只要有就返回他不创建,没有就创建再返回if not self.instance:self.instance =objreturn self.instance
​
​
class Student(metaclass=MyType):...
​
​
stu_one = Student()
print(id(stu_one))      # 2645492891216
stu_two = Student()
print(id(stu_two))      # 2645492891216
​
# 定制类的属性 ---》 元类 __init__
# 定制对象的属性 ---> 元类 __call__
​
​
# 方式二
# 使用装饰器
# outer 接受cls类作为参数
def outer(cls):# 定义一个字典,键为cls,初始值为none,永远存储cls的单例实例instance = {'cls':None}
​def inner(*args, **kwargs):# 使用nonlocal关键字声明 instance变量,这意味着inner函数将修改在outer函数中定义的instance变量,而不是创建一个新的nonlocal instance# 进行判断是否有clsif not instance['cls']:instance['cls'] = cls(*args, **kwargs)return instance['cls']
​return inner
​
​
@outer
class Student:...
​
​
stu_one = Student()
print(id(stu_one))      # 1384468577632
stu_two = Student()
print(id(stu_two))      # 1384468577632
http://www.yayakq.cn/news/611769/

相关文章:

  • 专业网站建设公司怎么做合肥网站建设创优
  • 做一个企业网站大概需要多少钱南昌小程序开发哪家公司好
  • 南山做网站哪家好网站开发编译器
  • 4s店网站建设计划电子商务网站建设 下载
  • 整站网站优化运营上海建筑企业资质查询平台
  • python做网站效率一起做网店 17货源网
  • 做数据新闻的网站有哪些wordpress acf教程
  • 泰州做网站 泰公网络科技公司wordpress教程 菜单
  • seo与网站建设的关联seo怎么收费
  • 网站建设风险是什么建设局电话号码是多少
  • 深圳罗湖网站制作公司哪家好手机能建设网站吗
  • 商城网站建设框架铜城建设集团网站
  • 用wordpress做的网站有哪些贵州省兴义市专做网站公司
  • 400网站总机 阿里云做 理财网站有哪些
  • 携程做网站的流程做网站用什么后缀好
  • 雄安网站开发公司网站建设电子商务
  • 网站优化和提升网站排名怎么做天猫商城入驻
  • 电子商务网站建设的知识点网站 的空间
  • 安徽建设厅网站进不去app怎么推广
  • 什么摄像头做直播网站全美网站建设
  • 商务网站的建设与维护怎么找厂家生产产品
  • 做海报一般都去什么网站看网站规划包括哪些方面
  • 四川达州网站建设ios软件开发前景
  • 网站怎么快速排名wordpress数据库引擎
  • vs2015 手机网站开发找关键词的网站
  • 建设网站合同范本可以看国外网站的浏览app
  • 河南省住房和城乡建设门户网站网站建设创新点
  • 深圳市专业的做网站怎样做好网络推广呀
  • 齐齐哈尔市建设工程监察网站wordpress丰富搜索页
  • 上海做外贸建站的专业公司做公司网站阿里