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

软件开发视频网站唯品会网站开发

软件开发视频网站,唯品会网站开发,跨境电商排名前十名品牌,柳州网站制作公司【一】为什么要单例模式 单例设计模式: 一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。 当一个类的功能比较单一,只需要一个实例…

【一】为什么要单例模式

单例设计模式:

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

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

【二】如何实现一个单例

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

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

    • 考虑是否支持延迟加载

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

  • 在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/311226/

相关文章:

  • 品牌网站建设 app建设专业的门户网站建设方案
  • 建设摩托官方网站u爽公司网站建设需求书
  • 番禺营销型网站建设在线教育平台搭建
  • 诸城市网站建设2345软件大全
  • 专门做美食的视频网站有哪些怎么制作网站源码
  • 收废铁的做网站有优点吗网站域名申请步骤
  • 网站推广服务网站连锁为企业做贡献的文章
  • 有什么做糕点的视频网站阿里巴巴商标注册官网
  • 网站实名认证需要什么域名注册查询软件
  • 如何做淘外网站推广白山市网站建设
  • 苏州哪家做网站骏域建网站
  • 网页制作与网站建设课堂实录有创意的广告公司名称
  • 网页设计做音乐网站徐州简欧室内设计公司排名
  • 网站内链怎么布局做网站路径
  • 网站建设响应技术汕头网站制作后缀
  • 站长工具源码铜仁网站建设哪家专业
  • 服务范围 网站建设公司代理公司注册公司费用
  • 福州网站建设网络公司排名域名注册网站免费
  • 仙桃网站优化免费软件网站有哪些
  • 莆田企业自助建站眼镜东莞网站建设
  • 网站后台找不到了怎么办网站建设保密协议范本
  • 做网站张家口网站未备案wordpress链接
  • 阿里巴巴的网站流程怎么健免费网站
  • 网站后台管理员密码成都水高新区建设局官方网站
  • 企业网站备案在哪个部门金泉网做网站要找谁
  • 商水县住房城乡建设网站目前好的推广平台
  • 长沙网站seo多少钱深圳网站网页制作
  • 怎样讲卖灯的网站做的好wordpress后台登不进去
  • 经销商城建站微信生活门户网站源码
  • php做网站好吗网站建设图片设置