单例模式:创建独一无二的对象
来源:互联网 发布:电脑风扇反转软件 编辑:程序博客网 时间:2024/04/30 02:35
单例模式是最简单也是最复杂的设计模式,说简单是因为组成单例模式的只有一个类,说复杂是因为单例模式的实现起码有七八上十种。有兴趣的程序员朋友请百度“单例模式有几种”。
本人在项目中往往将property文件的读写类设计成单例模式,这样可以保证在整个项目中读写property文件的一致性。
由于单例模式的实现只有一个类,就不看类图了,直接上代码:
publicclassWechatPropertiesextendsProperties {
privatefinalstaticStringWECHAT_PROPERTIES_FILE_NAME="wechat.properties";
privatestaticWechatPropertiesinstance;
privateWechatProperties() {
}
privateWechatProperties(Propertiesarg0){
super(arg0);
}
publicstaticsynchronizedWechatProperties getInstance() throwsPropertiesException {
if(null==instance){
instance=newWechatProperties();
InputStreampropertiesFileStream= WechatProperties.class.getResourceAsStream("/"+WECHAT_PROPERTIES_FILE_NAME);
if(null==propertiesFileStream){
thrownewPropertiesFileNotExistException("Load"+WECHAT_PROPERTIES_FILE_NAME+"failed, please make sure that file is in the classpath.");
}
try{
instance.load(propertiesFileStream);
}catch(IOExceptione){
thrownewPropertiesException("Load"+WECHAT_PROPERTIES_FILE_NAME+"error, "+e.getMessage());
}
}
returninstance;
}
}
从代码中可见,WechatProperties类的实例是在getInstance()方法中创建的,因此是典型的懒汉型单例模式。用synchronized关键字修饰getInstance()方法,使得该单例模式是线程安全的。这种单例模式牺牲了一点效率,保证了线程的安全和资源的最小占用。
希望以上的例子对您理解和使用单例模式能有所启发和借鉴。
- 单例模式:创建独一无二的对象
- 模式五:单例模式(Singleton Pattern)——创建独一无二的对象
- Java设计模式:单例模式-独一无二的对象
- 单例模式(Singleton Pattern)——独一无二的对象
- 单件模式(独一无二的对象)
- 我是独一无二的『单例模式』
- VB.NET“独一无二”之单例模式
- 单例模式之 对象的创建
- 【设计模式与Android】单例模式——独一无二的皇帝
- 24种设计模式----(*独一无二*单例模式)
- 独一无二的我还用作自我介绍吗?SingletonPattern----单例模式
- 抵御反射创建单例模式的对象
- 单例对象的创建
- 创建独一无二的包名
- 单例模式的创建
- 单例模式的创建
- 单例模式:单线程和多线程并发情况下的对象创建
- 设计模式【5】:单例模式【创建对象】
- leetcode 036 Valid Sudoku
- 136 - Ugly Numbers
- JAVA音乐播放器(二)(实现列表点击播放)
- HDU2069 & UVA 674 Coin Change(换硬币 dp 入门经典水题,背包问题)
- 悼念512汶川大地震遇难同胞——一定要记住我爱你
- 单例模式:创建独一无二的对象
- 高DPI的Win32程序示例
- C++实验5——数组分离
- Linux内存[翻译]
- 高性能阻塞队列
- More Effective C++----(23)考虑变更程序库
- postgreSQL中函数json_populate_recordset的参数null::myrowtype如何使用
- nyoj18 The Triangle
- 介绍几款AI开源平台