java设计模式之单例模式 发表于 2017-10-12 | 分类于 Java设计模式 | 本文总阅读量 次 时间不会辜负每一个平静努力的人!欢迎来到周建的博客: 共同致力于技术分享与交流 1.单例设计模式 懒汉式与饿汉式有什么不同?懒汉式的特点在于实例的延迟加载。 懒汉式延迟加载有没有问题?有,如果多线程访问时会出现安全问题。 如何解决?可以加同步来解决,但是稍微有些低效(同步代码块和同步函数都行),可以通过双重判断来解决低效问题,提高效率。 2.代码实现(1)饿汉式 123456789101112131415161718192021package 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)懒汉式 12345678910111213141516171819202122232425262728293031323334353637package 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.测试代码123456789101112131415161718192021222324252627282930package 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;@Overrideprotected 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