单例设计模式
来源:互联网 发布:绝对值 java y== 编辑:程序博客网 时间:2024/06/05 16:07
保证在一个应用里面只有一个对象,实现方式有两种,懒汉式和饿汉式,
饿汉式一开始就初始化,并不存在线程的安全问题,实现如下
实现思路,私有化构造函数,不让new对象,提供静态方法返回该对象实例,在定义成员变量的时候初始化
public class Person { private Person(){} private static Person p = new Person(); public static Person getInstance(){ return p; }}
饿汉式在使用的时候再去进行初始化,这样就有可能会产生线程安全问题,解决方式是双重检查
实现思路,私有化构造函数,在调用获取对象的时候再进行初始化,这样就回存在一个安全隐患,需要双重检查判断
public class Person { private Person() {} private static Person p; public Person getInstance(){ if(p == null){ synchronized (Person.class) { if(p == null){ p = new Person(); } } } return p; }}
在android应用中,我们经常也会用到单例模式,比入我在之前一个项目中,我把我的个人信息用一个单独的类管理,然后做成了单例,在是使用的时候需要传递Context,然后就会有内存泄露的危险
public class UserInfoManger { private static UserInfoManger mUserInfoManger = new UserInfoManger(); private UserInfoManger(){} private UserInfo mUserInfo; public static UserInfoManger getInstance(){ return mUserInfoManger; } public UserInfo getmUserInfo(Context context) { if( mUserInfo == null){ mUserInfo = new UserInfo(context); } return mUserInfo; }}
这里应该加上一些处理
public class UserInfoManger { private static UserInfoManger mUserInfoManger = new UserInfoManger(); private UserInfoManger(){} private UserInfo mUserInfo; public static UserInfoManger getInstance(){ return mUserInfoManger; } public UserInfo getmUserInfo(Context context) { if( mUserInfo == null){ context.getApplicationContext(); mUserInfo = new UserInfo(context); } return mUserInfo; }}
0 0
- 设计模式--单例
- 单例设计模式
- 设计模式----单例
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 设计模式-单例
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 验证码无法显示:Could not initialize class sun.awt.X1 解决方案
- Android学习系列--App调试内存泄露之Context篇(下)
- 基于Tomcat7、Java、WebSocket的服务器推送聊天室
- Jlink V8固件修复(支持MDK4.70a)
- Linux编程基础——GDB(设置断点)
- 单例设计模式
- 极客学院HTML5全套教程
- ECshop修改后台订单的电话、地址等信息
- 免安装版TOMCAT配置及问题解决方法
- JS 封装类的例子
- 甩掉IDE的包袱,专注算法及语言学习
- NoSQL
- touch分发
- Maven在MyEclipse上运行报错“Could not find the main class”&-Dmaven.multiModuleProjectDirectory system prope