我理解的设计模式:单例模式
2016-04-29 23:41
344 查看
单例模式(singleton pattern)
什么是单例模式,四人帮的书里面这么定义:
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
可以这么理解:在一个进程里,这个类只会被实例化一次,而且可以很方便的被调用。
实现:
恶汉式:
加载类的时候,在类的内部定义一个实例,外部调用则开放给一个静态函数。
懒汉式:
外部调用开放给一个静态函数,并在调用的时候检测有没有实例化。
比较恶汉式和懒汉式,恶汉式在多次加载类的时候会多次初始化,懒汉式同步处理会降低速度。
什么是单例模式,四人帮的书里面这么定义:
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
可以这么理解:在一个进程里,这个类只会被实例化一次,而且可以很方便的被调用。
实现:
恶汉式:
加载类的时候,在类的内部定义一个实例,外部调用则开放给一个静态函数。
Lua实例: (不要问我为什么用Lua,最近写手游Lua用得多,but c++就用的少了,只有修改cocos引擎底层的时候才用的到。 lua中class的实现可以参照quick-cocos2d-x的framework ) local Singleton = class("Singleton") function Singleton:ctor() end function Singlenton:doSomething() print("hey, u get me") end local instance = Singleton.new() function Singleton.getInstance() return instance end Singleton.getInstance():doSomething() 控制台: hey, u get me
懒汉式:
外部调用开放给一个静态函数,并在调用的时候检测有没有实例化。
local Singleton = class("Singleton") function Singleton:ctor() end function Singlenton:doSomething() print("hey, u get me") end local instance function Singleton.getInstance() if instance == nil then instance = Singleton.new() end return instance end Singleton.getInstance():doSomething() 控制台: hey, u get me
比较恶汉式和懒汉式,恶汉式在多次加载类的时候会多次初始化,懒汉式同步处理会降低速度。
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- Ruby设计模式编程之适配器模式实战攻略
- 实例讲解Ruby使用设计模式中的装饰器模式的方法
- 设计模式中的模板方法模式在Ruby中的应用实例两则
- 详解Lua中的表的概念及其相关操作方法
- Ruby设计模式编程中对外观模式的应用实例分析
- 实例解析Ruby设计模式编程中Strategy策略模式的使用
- Ruby中使用设计模式中的简单工厂模式和工厂方法模式
- Lua编程示例(二):面向对象、metatable对表进行扩展
- Ruby使用设计模式中的代理模式与装饰模式的代码实例
- 把Lua编译进nginx步骤方法
- Lua脚本自动生成APK包
- Lua中的元表(metatable)、元方法(metamethod)详解
- Lua中的metatable介绍