单例设计模式

来源:互联网 发布:mysql 导入employees 编辑:程序博客网 时间:2024/04/30 16:54

单例设计模式用于解决一个类在内存中只能存在一个对象的问题。

例如当程序A修改了文件F中的数据,之后文件B再读取文件F中的数据,此时读取的数据应该是程序A修改之后的数据,因为我们在读取和修改数据时都要new  file对象,读取和修改使用了两个file对象,在两个对象上修改是不正确的。

单利设计模式的实现:

1.饿汉式

class Single(){

//禁止其他程序建立该类对象

private Single(){}

//为了让其他程序可以访问到该类对象,只好在其类中自定义一个对象

private static Single s = new Single();

//对外提供访问方式

public static Single getInstance(){

return s;

}

}

2.懒汉式 

class Single(){

private Single(){}

private static Single s = null;

public static Single getInstance(){

if(s==null)

s = new Single();

return s;

}

懒汉式存在线程安全问题,有两种解决该问题的方法:

1.在getInstance()方法中用关键字synchronize修饰

2.添加双重判断

class Single(){

private Single(){}

private static Single s = null;

public static Single getInstance(){

if(s==null){

synchronized(Single.class){

if(s==null)

s = new Single();

return s;

}

}

}

但是使用synchronized关键字会存在效率问题,因此我们在开发中使用饿汉式。
0 0
原创粉丝点击