Java设计模式之单例设计模式
来源:互联网 发布:仿卷皮源码 编辑:程序博客网 时间:2024/06/08 00:42
1.单例设计模式
- 懒汉式与饿汉式有什么不同?
懒汉式的特点在于实例的延迟加载。 - 懒汉式延迟加载有没有问题?
有,如果多线程访问时会出现安全问题。 - 如何解决?
可以加同步来解决,但是稍微有些低效(同步代码块和同步函数都行),可以通过双重判断来解决低效问题,提高效率。
2.代码实现
(1)饿汉式
package com.zhoujian.singgleinstance.single;/** * Created by zhoujian on 2016/12/5. *//** * 饿汉式 */public class SingleOne{ //私有构造函数,防止被实例化 private SingleOne(){} //创建对象 private static final SingleOne mSingleOne = new SingleOne(); //获取对象 public static SingleOne getInstance() { return mSingleOne; }}
(2)懒汉式
package com.zhoujian.singgleinstance.single;/** * Created by zhoujian on 2016/12/5. *//** * 懒汉式 */public class SingleTwo{ //私有构造函数,防止被实例化 private SingleTwo() { } private static SingleTwo mSingleTwo = null; public static SingleTwo getSingleInstance() { if (mSingleTwo == null) { synchronized (SingleTwo.class) { if(mSingleTwo == null) { mSingleTwo =new SingleTwo(); } } } return mSingleTwo; }}
3.测试代码
package com.zhoujian.singgleinstance.activity;import android.app.Activity;import android.os.Bundle;import android.widget.Toast;import com.zhoujian.singgleinstance.R;import com.zhoujian.singgleinstance.single.SingleTwo;public class MainActivity extends Activity{ private SingleTwo mInstanceone; private SingleTwo mInstanceteo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mInstanceone = SingleTwo.getSingleInstance(); mInstanceteo = SingleTwo.getSingleInstance(); if (mInstanceone==mInstanceteo) { Toast.makeText(this, "两个对象是同一个对象", Toast.LENGTH_SHORT).show(); } }}
4.源码下载地址
源码下载地址:https://github.com/zeke123/SingleInstance
0 0
- java设计模式之单例设计
- java设计模式之单例模式
- Java模式设计之单例模式
- Java模式设计之单例模式
- Java模式设计之单例模式
- java设计模式之单例模式
- Java模式设计之单例模式
- Java模式设计之单例模式
- Java设计模式之单例模式
- Java设计模式之单例模式
- Java设计模式之单例模式
- Java设计模式之单例模式
- Java模式设计之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- RxJava获取本地视频
- GitHub多人协作
- ReactNative 4Android源码分析二: 《JNI智能指针之实现篇》
- 二维数组排列组合
- 类型转换
- Java设计模式之单例设计模式
- 欢迎使用CSDN-markdown编辑器
- 基础练习 特殊的数字
- 对设计模式的理解
- jQuery map() 方法
- 使用Unity3D的50个技巧:Unity3D最佳实践
- 在Linux上部署JavaEE应用
- 简单的Qt连接信号与槽
- DateTime.Now 属性 获取的结果 星期