设计模式:单例设计模式
饿汉式:一上来就把对象创建好了
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; } }