1.饿汉式
public class SingleTon01 {
public static void main(String[] args) {
Person person = Person.getInstance();
System.out.println(person);
}
}
class Person{//饿汉式
private String name;
//2.类的内部创建一个对象
private static Person p = new Person("小jun");
//1.构造器私有化
private Person(String name){
this.name = name;
}
//3.提供一个公共的方法
public static Person getInstance(){
return p;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
'}';
}
}
2.懒汉式
public class SingleTon02 {
public static void main(String[] args) {
//System.out.println(Cat.n);//类被加载,但不会创建Cat猫对象(饿汉式类加载就会创建对象)
Cat cat = Cat.getInstance();
System.out.println(cat);
}
}
class Cat{
private String name;
public static int n = 1;
//2.定义一个静态属性
private static Cat cat ;
private Cat(String name) {//1.构造器私有化
this.name = name;
}
//3.提供一个公共的static方法
public static Cat getInstance(){
if(cat==null){//如果没有,则调用方法创建对象
cat = new Cat("小可爱");
}
return cat;
}
@Override
public String toString() {
return "Cat{" +
"name='" + name + '\'' +
'}';
}
}