一.概念
- 饿汉式,类加载时对象就创建。
- 懒汉式,只有当用户使用类中创建对象的方法时才会创建。
二.饿汉式
package singleModel;
public class single {
public static void main(String args[]){
System.out.println(Girl.getGirl());
}
}
class Girl{
private String name;
//类中创建私有化静态对象,保证单例只有一个。只要类加载,对象就创建了(因为static)
private static Girl girl = new Girl("小红花");
private Girl(String name){
this.name = name;
}
//提供一个static方法返回对象
public static Girl getGirl(){
return girl;
}
@Override
public String toString() {
return "Girl{" +
"name='" + name + '\'' +
'}';
}
}
三.懒汉式
public class singleLazy {
public static void main(String args[]) {
Cat cat = Cat.getInstance();
System.out.println(cat);//Cat小可爱
Cat cat2 = Cat.getInstance();
System.out.println(cat2);//Cat小可爱
}
}
class Cat{
private static String name;
private static Cat cat;
private Cat(String name){
this.name = name;
}
//方法中创建对象
public static Cat getInstance(){
if(cat.name == null){
cat = new Cat("小可爱");
}
return cat;
}
@Override
public String toString() {
return "Cat"+name;
}
}
四.比较