java 懒汉式、饿汉式单例模式 不含多线程的情况

//饿汉式 提前生成了单例对象
class Singleton{
    private static final Singleton instance=new Singleton();

    private Singleton(){}

    public static Singleton getInstance(){
        return instance;
    }

}

//懒汉式 调用的时候才会生成对象
class Singleton11
{
    private static Singleton11 instance;
    private Singleton11(){}
    
    public static Singleton11 getInstance(){
        if (instance==null)
        {
            instance=new Singleton11();
        }
        return instance;
    }
}

//多例模式
class Color
{
    private static final Color Red=new Color("红色");
    private static final Color Green=new Color("绿色");
    private static final Color Blue=new Color("蓝色");
    
    private String color;
    private Color(String color){
        this.color=color;
    }

    public static Color getInstance(String color){
        switch (color)
        {
        case "红色": return Red;
        case "绿色": return Green;
        case "蓝色": return Blue;
        default: return null;
        
        }
    }

    public String print(){
        return this.color;
    }
}


public class TestSingleton{
    public static void main(String[] args){
        Singleton A=Singleton.getInstance();
        Singleton B=Singleton.getInstance();
        System.out.println(A==B);

        Singleton11 A11=Singleton11.getInstance();
        Singleton11 B11=Singleton11.getInstance();
        System.out.println(A11==B11);

        Color red=Color.getInstance("红色");
        Color green=Color.getInstance("绿色");
        Color blue=Color.getInstance("蓝色");

        System.out.println(red.print());
        System.out.println(green.print());
        System.out.println(blue.print());
    }
}

见如上分享:

多线程的情况,后续补充。。。

猜你喜欢

转载自www.cnblogs.com/xiaoxiao075/p/12021018.html