设计模式-单例模式
来源:互联网 发布:java ee jdk下载 编辑:程序博客网 时间:2024/05/17 03:47
设计模式-单例模式
一 设计模式概述:
java中设计模式一共23种
是解决某一类问题最行之有效的方法
二 单例设计模式:
解决一个类在内存中只存在一个对象的问题
想要保证对象的唯一性:
1,为了避免其他程序过多的建立该类对象,现金支改程序建立该类对象,即构造函数私有化
2,为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象
3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式
实现单例模式的步骤:
1,将构造函数私有化
2,在类中创建一个本类的对象
3,提供一个方法可以获取到该对象
下面是一个学生单例类
三 两种单例模式
1,饿汉式:
先初始化对象
该类一进入,就已经创建好了对象
开发使用这种
class Test{ //自定义对象 private static Test t = new Test(); //构造函数私有化 private Test(){}; //提供getInstance方法 public static Test getInstance() { return t; }}
2,懒汉式:
对象是方法被调用时才初始化,也叫对象的延时加载
该类进入内存,对象没有存在,只有调用了getInstance方法时,才建立对象
class Test{ //自定义对象为空 private static Test t = null; //构造函数私有化 private Test(){}; //提供getInstance方法 public static synchronized Test getInstance() { if(t == null) { t = new Test(); } return t; } }
缺点:
在cpu调度的时候,可能会出现问题,可能会建立多个对象
解决方案一:
加上synchronized
class Test{ private static Test t = null; private Test(){}; public static synchronized Test getInstance() { return t; } }
这种方案会使得程序效率低
解决方案二:
使用双重判断和synchronized配合,常常使用这种方法
class Test{ private static Test t = null; private Test(){}; public static Test getInstance() { if(t ==null) { synchronized(Test.class) { if(t == null) t = new Test(); } } } return t; }
0 0
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 设计模式-单例模式
- [设计模式] 单例模式
- 设计模式--单例模式
- 设计模式---单例模式
- 设计模式--单例模式
- 设计模式 -----单例模式
- 设计模式:单例模式
- mac使用git管理Github
- Java在游戏服务器开发中的应用
- StackOverflowError
- Unity3d Coroutine的Start和Stop
- iptables 详解
- 设计模式-单例模式
- 【坑】JSP中使用jsp:param传入参数的时候出现中文乱码
- NAT网络下TCP连接建立时可能SYN包被服务器忽略-tcp_tw_recycle
- Android 开源项目android-open-project工具库解析之(一) 依赖注入,图片缓存,网络相关,数据库orm工具包,Android公共库
- java深入解析-第2章 运算符与表达式2
- cannot be resolved to a type错误
- poj 2029 Get Many Persimmon Trees
- 傅里叶变换
- MySQL详解(16)-----------海量数据建议