[设计模式]01.单例模式
单例模式
前言
单例模式是非常实用的设计模式。单例类只会被创建一次,而后就会一直被贮存在内存中,许多具有管家性质的功能模块,都要尽量使用单例模式的思想去设计。
特点
- 有且仅有一个实例。单例类只会被创建一次,而后就会一直被贮存在内存中
- 具备管家性质。
- 单例类的成员变量的信息,会一直保存。
写法
- 构造方法必须私有。
- 提供唯一一个获取该类实例的入口方法。业内规范方法命名为:getInstance()。
- 自己创建自己。
用例
- 刚刚结束的广告模块的开发,就用到了单例模式。有一个ADSystem类,负责对广告信息获取,请求,分发,存储等的所有操作。
- 游戏的声音管理,也有用到单例类,有一个声音管理者,负责对所有游戏声音的管理,播放,暂停,加载,释放。
- cocos2d-x里非常著名的Director,就是一个单例类。
代码写法
单例类有多种写法,现在贴一种最好用的最安全的写法。
public class Singleton {
// ---------------
// 成员变量
// ---------------
private int filed1;
private int filed2;
private int filed3;
// ---------------
// 构造方法
// ---------------
private Singleton() {}
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
public synchronized static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
/**
* 方法一
*/
public void method1(){}
/**
* 方法二
*/
public void method2(){}
/**
* 方法三
*/
public void method3(){}
}
如果要设计单例类,按照上面的模板去设计就好了。
调用代码:
// 执行方法一
Singleton.getInstance().method1();
// 执行方法二
Singleton.getInstance().method2();
// 执行方法三
Singleton.getInstance().method3();
本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 )
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/5008351.html
比大多数人的努力程度之低,根本轮不到拼天赋...
宝宝巴士 SD.Team