设计模式:单例
设计模式:23个设计模式
创建型
行为型
结构型
架构模式:
战略
单例/单态:如何能保证一个类只出一个对象?
懒汉式:
缺点:访问速度慢
优点:使用才加载对象
synchronized 同步可以解决懒汉式问题
饿汉式:
优点:访问速度快
缺点:提前加载
下面说一下懒汉式和饿汉式的区别及优点:
饿汉式不管有没有调用对象创建方法,都会预先在系统中创建一个静态对象
懒汉式不会预先创建对象,只有在第一次调用时才创建对象
饿汉式优点: 在多线程模式下是安全的
缺点: 没有调用方法前就被加载,会占用内存
懒汉式优点:只有调用方法才创建对象,不会占用内存
缺点:在多线程模式下不安全
public class Hello {//饿汉式单例
//构造器私有化 不可以在外界创建此类对象
private Hello() {
System.out.println("创建对象");
}
//静态成员只有一份 加载本类对象 也只有一个
private static Hello hello = new Hello();//静态只可能有一份
//此方法是返回本类唯一对象
public static Hello getHello() {
return hello;//只要调用此方法就可以创建对象
}
}
public class SayHello {
private SayHello(){
System.out.println("SayHello创建了对象");
}
private static SayHello sayHello;//声明对象
public static synchronized SayHello getSayHello(){
if(sayHello==null){//判断调用为空吗?
sayHello=new SayHello();//如果不为空再创建对象
}
return sayHello;//如果不为空直接返回对象
}
}