单例模式知识点纠正

来源:互联网 发布:网络语卡带是什么意思 编辑:程序博客网 时间:2024/06/04 19:00

private只能被类内部访问,是说只有在该类内部的成员才可以访问,本来的疑惑是在其他类中实例化的该类的对象是否可以访问,答案是不可以,因为该对象是在其他类中,不是类的内部成员,但是可以通过对象调用public的成员函数来调用private的成员

单利模式其中一种实现方式:
class Single {
private static Single INSTANCE=new Single();
private Single(){}
public static Single getInstance(){
return INSTANCE;
}

}

然后就可以在类内部添加其他实现函数了:

class Single {
private static Single INSTANCE=new Single();
private Single(){}
public static Single getInstance(){
return INSTANCE;
}
public  int sysOut(int z){
int x=returnY();
z=x+4;
return z;
}
private int returnY(){
int x=1,y;
y=x+3;
return y;
}

}

在其他类中调用:

public class SingleTest {
public static void main(String[] args) {
Single s1=Single.getInstance();
Single s2=Single.getInstance();
int x=s1.sysOut(1);
System.out.println(x);
System.out.println(s1);
System.out.println(s2);
}
}

结果:



添加线程安全及volatile之后的实例(这个比较实用):

(来源网址:http://blog.csdn.net/goodlixueyong/article/details/51935526)

public class Singleton {
private static volatile Singleton instance=null;
private Singleton(){};
public static Singleton getSingleton(){
if(null==instance){
synchronized (Singleton.class) {//xxx.class表示获得xxx类的对象
if(instance==null){
instance=new Singleton();
}
}
}
return instance;
}


}




原创粉丝点击