/**
单例设计模式:
保证一个类仅有一个实例,并提供一个全局访问点。
1:构造方法私有化 private
2:在本类中声明一个本类对象 private static
3:给外部提供一个静态方法,获取对象的实例。
涉及到安全问题的是,懒汉式。它们都属于单例设计模式,这个模式设计的最大特点就是,一
个对象保证系统中只有一个实例,而且该实例易于外界访问。
但是懒汉式的设计在多线程访问时,就不能保证系统中只会有一个实例了,就会出现安全问题,这个时候就用到同步了
饿汉式-----比较着急 生成对象的时候就先定义出对象
懒汉式----后生成对象:在本类中声明一个本类对象先null 在获取对象的实例中生成对象,
:::举个例子::::
*/
public class SingletonDemo{
public static void main(String[] args){
singleton1 S = singleton1.getInstance();
S.Bn();
System.out.println();
singleton2 S1 = singleton2.getInstance();
S1.Bn();
}
}
//-----------------饿汉式-------------------------//
class singleton1{
//1:构造方法私有化!private
private singleton1(){}
//2:声明一个本类对象
private static singleton1 S=new singleton1();
//3:给外部提供一个静态方法,获取对象的实例。
public static singleton1 getInstance(){
return S;
}
public void Bn(){
System.out.println("我是饿汉式!!!!");
}
}
//-----------------懒汉式-------------------------//
class singleton2{
//1:构造方法私有化!private
private singleton2(){}
//2:声明一个本类对象
private static singleton2 S1=null;//在本类中声明一个本类对象先null
//3:给外部提供一个静态方法,获取对象的实例。
public static singleton2 getInstance(){
if(S1==null){
S1=new singleton2(); //这时候才本类中new一个本类
}
return S1;
}
public void Bn(){
System.out.println("我是懒汉式!!!!");
}
}
|