单例设计模式

/**
    单例设计模式
    1、构造方法私有化;
    2、声明一个静态的本类对象;
    3、给外部提供一个静态方法来获取本类的对象实例
    
    
    1、饿汉式:在类被加载后,对象就被创建,到程序结束后释放(占用内存的时间长,提高效率)
    2、懒汉式:在第一次调用getInstance方法时,对象就被创建,到程序结束后释放(占用内存的时间短,效率低【懒加载或延迟加载】,在多线程访问时会有安全问题)
    
    单例设计模式的目的:为了节省重复创建对象所带来的内存消耗,从而来提高效率
    
    能不能使用构造方法私有化+静态方法来替代单例?
 */
public class Test21 {
    public static void main(String[] args) {
        
        Singleton1 s1 = Singleton1.getInstance();
        s1.print();
        
        Singleton2 s2 = Singleton2.getInstance();
        s2.print();
        
        Tools.print1();

    }

}

//饿汉式 单例 
class Singleton1{
    private Singleton1(){}  //构造方法私有化
    private static Singleton1 s = new Singleton1(); //声明一个静态本类对象
    public static Singleton1 getInstance(){   //给外部提供一个静态方法来获取本类的对象实例
        return s;
    }
    public void print(){
        System.out.println("我是饿汉式");
    }
    
}

//懒汉式 单例
class Singleton2{
    private Singleton2(){}
    private static Singleton2 s;
    public static Singleton2 getInstance(){
        if (s == null){
            s = new Singleton2();
        }
        return s;
    }
    public void print(){
        System.out.println("我是懒汉式");
    }
}


//构造方法私有化+静态方法替换单实例
class Tools{
    private Tools(){}
    public static void print1(){
        System.out.println("我是:构造方法私有化+静态方法");
    }
    public static void print2(){
        
    }
}

你可能感兴趣的:(单例设计模式)