博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[置顶] 单例模式lua实现
阅读量:4635 次
发布时间:2019-06-09

本文共 802 字,大约阅读时间需要 2 分钟。

 

--[[	优点	一、实例控制	单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。	二、灵活性	因为类控制了实例化过程,所以类可以灵活更改实例化过程。	缺点	一、开销	虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题。	二、可能的开发混淆	使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。	三、对象生存期	不能解决删除单个对象的问题。在提供内存管理的语言中(例如基于.NET Framework的语言),只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用。在某些语言中(如 C++),其他类可以删除对象实例,但这样会导致单例类中出现悬浮引用。]]--Singleton = {}function Singleton:new(o)	o = o or {}	setmetatable(o,self)	self.__index = self	return oendfunction Singleton:Instance()	if self.instance == nil then		self.instance = self:new()	end	return self.instanceends1 = Singleton:Instance()s2 = Singleton:Instance()if s1 == s2 then	print("两个对象是相同的实例")end

输出结果:

两个对象是相同的实例

交流群:315249378

如有不正确,欢迎交流讨论!

转载于:https://www.cnblogs.com/suncoolcat/p/3423896.html

你可能感兴趣的文章
python 生成验证码
查看>>
从零开始用 Flask 搭建一个网站(二)
查看>>
leetcode-93-复原ip地址
查看>>
RAID详解[RAID0/RAID1/RAID10/RAID5]
查看>>
MySQL 基础内容
查看>>
导航条——收缩式导航菜单
查看>>
经常使用ARM汇编指令
查看>>
函数指针&绑定: boost::functoin/std::function/bind
查看>>
js实现双击后网页自己主动跑-------Day55
查看>>
TMS320F28335项目开发记录2_CCS与JTAG仿真器连接问题汇总
查看>>
PS多形式的部分之间复制“笨办法”
查看>>
最强的篮球队和马尔可夫模型
查看>>
hdu-4302-Holedox Eating-线段树-单点更新,有策略的单点查询
查看>>
cocos2d-x 音效中断问题
查看>>
设计模式简要笔记
查看>>
子分类账知识学习(汇总网上比较有用的资料)
查看>>
关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题...
查看>>
pyQt 每日一练习 -- 登录框
查看>>
wp 删除独立存储空间文件(多级非空文件夹删除)
查看>>
Loadrunner安装使用入门
查看>>