设计模式:单例设计模式

饿汉式:一上来就把对象创建好了

class Bank{
//私有化当前类的构造器
   private Bank(){} 

//在类的的内部创建对象 private static Bank bank=new Bank();


//通过公共的方法,获取Bank实例 public static Bnak getInstance(){ return bank; } }

懒汉式:延迟对象的创建,用才创建,但线程不安全

class Applicaton{
     
    //私有化类的构造器
     private Application(){}
     
    //声明当前类的对象,使用private static 修饰
     private static Application app=null;

    //通过方法获取当前类的实例
    public static Application getInstance(){
    //判断是否已存在当前类的实例,单例模式只有一个当前类的实例,故必须判断
      if(app ==null){
          
          app=new Application();

           }
      //已存在就直接返回当前类的实例
          return app;
        }

}            

 懒汉式的线程安全,同步代码块的写法

package threadtest;
/*
 * 线程安全下的懒汉模式
 */
public class LanHan {

        public static void main(String[] args) {
            Applicaton a1=Applicaton.getInstance();
            Applicaton a2=Applicaton.getInstance();
            System.out.println(a1==a2);
        }
}


//懒汉式:延迟对象的创建,用才创建,但线程不安全

class Applicaton{
     
    //私有化类的构造器
     private Applicaton(){}
     
    //声明当前类的对象,使用private static 修饰
     private static Applicaton app=null;

    //通过方法获取当前类的实例
    public  static Applicaton getInstance(){
     synchronized (Applicaton.class) {
        //判断是否已存在当前类的实例,单例模式只有一个当前类的实例,故必须判断
        if (app == null) {

            app = new Applicaton();

        }
    }
    //已存在就直接返回当前类的实例
      return app;
        }

}            
 

//同步方法的写法
package
threadtest; /* * 线程安全下的懒汉模式 */ public class LanHan { public static void main(String[] args) { Applicaton a1=Applicaton.getInstance(); Applicaton a2=Applicaton.getInstance(); System.out.println(a1==a2); } } //懒汉式:延迟对象的创建,用才创建,但线程不安全 class Applicaton{ //私有化类的构造器 private Applicaton(){} //声明当前类的对象,使用private static 修饰 private static Applicaton app=null; //通过方法获取当前类的实例 public synchronized static Applicaton getInstance(){ //判断是否已存在当前类的实例,单例模式只有一个当前类的实例,故必须判断 if(app ==null){ app=new Applicaton(); } //已存在就直接返回当前类的实例 return app; } }
原文地址:https://www.cnblogs.com/ylblikestudyJava/p/12362773.html