您的位置:首页 > 职场人生

黑马程序员-学习日记(单例设计模式的两种类型)

2014-11-27 19:11 141 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
单例设计模式:解决一个类在内存中只有一个对象
多个程序使用统一配置信息对象时,需要保证该对对象的唯一性。

保证对象唯一性的实现步骤:

1.将构造函数私有化:为了避免其他程序过多建立该对象,禁止其他程序调用该对象。
2.在类中创建一个本类对象:为了让其他程序可以访问该类对象
3.提供一个方法可以获取到该对象的方法:方便其他程序访问自定义的本类对象。(类方法的访问方式只有两种,建立对象或定义为静态方法)
饱汉式:
public class testIO{
public static void main(String[] args){
Single s = Single.getInstance();
}
}

class Single
{
private Single(){}//私有化构造函数,使得无法随意创建对象
static Single s = new Single();//创建对象,由于被用于静态方法中,所以要加上static关键字
public static Single getInstance(){
return s;
}
}

饿汉式:
class single2
{
private single2(){}
static single2 s2 = null;
public static synchronized single2 getInstance(){ //2、而加了synchronized关键字后只能有一个线程进入执行,会导致效率低下
if (s2==null) //1、注意:多个线程调用时,若某一个线程停在这儿,另一个线程也能进入执行。会导致单例失败。
s2 = new single2();
return s2;
}
//3、这样做比较好
public static single2 getInstance2(){
if (s2 == null){
synchronized (Single.class) {
if(s2==null)
s2 = new single2();
}
}
return s2;
}
}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: