Singleton
2016-07-14 23:11
211 查看
问题:编写一个Singleton类
简单的方式
package cn.changb.singleton; /** * 简单的方式:弊端是在并发执行时,14行处可能存在多个实例 */ public class SingletonDemo1 { private static SingletonDemo1 INSTANCE; private SingletonDemo1() { } public static SingletonDemo1 getInstance() { if (INSTANCE == null) { INSTANCE = new SingletonDemo1(); } return INSTANCE; } }
公共域方式
package cn.changb.singleton; /** * 公共域方式:简单,不存在并发出现多实例的问题,但弊端是返回实例时增加一些额外的逻辑 */ public class SingletonDemo2 { public static final SingletonDemo2 INSTANCE = new SingletonDemo2(); private SingletonDemo2() { } }
工厂化方式
package cn.changb.singleton; /** * 工厂化方式:可以在实例化过程中(11行处)添加逻辑 */ public class SingletonDemo3 { private static final SingletonDemo3 INSTANCE = new SingletonDemo3(); private SingletonDemo3() { } public static SingletonDemo3 getInstance() { return INSTANCE; } }
枚举类方式
package cn.changb.singleton; /** * 枚举类方式:最佳实践,推荐方式 * * 不存在多个实例问题、反序列化问题! */ public enum SingletonDemo4 { INSTANCE; }
SingletonTest
package cn.changb.singleton; public class SingletonTest { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("SingletonDemo1" + SingletonDemo1.getInstance()); System.out.println("SingletonDemo1" + SingletonDemo1.getInstance()); System.out.println("SingletonDemo2" + SingletonDemo2.INSTANCE); System.out.println("SingletonDemo2" + SingletonDemo2.INSTANCE); System.out.println("SingletonDemo3" + SingletonDemo3.getInstance()); System.out.println("SingletonDemo3" + SingletonDemo3.getInstance()); System.out.println("SingletonDemo4" + SingletonDemo4.INSTANCE); System.out.println("SingletonDemo4" + SingletonDemo4.INSTANCE); } }
相关文章推荐
- 将UIImage保存到iOS照片库和对应程序沙盒中-b
- 本地套接字
- AFNetWorking的底层原理
- 第十二章 Supporting System
- python学习第五天 List和tuple类型介绍及其List切片
- Codeforces 472C Design Tutorial: Make It Nondeterministic
- iOS使用HealthKit框架实现获取今日步数
- 框架
- Swing的布局管理器
- Android总结随笔
- 小强测试品牌培训班学员成果展示
- 用Android Studio写的查看天气的app(CoolWeather)
- neural-networks-and-deep-learning mnist-loader
- java 支付宝接口
- winform学习窗体动画
- 在linux下安装并配置mysql数据库
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(四)-- Middleware
- DialogFragment实践与原理
- MATLAB常用函数记录
- Apache VS Tomcat