饿汉模式

image-20221103155324261

Runtime 饿汉模式

  1. 饿汉
    1. 在对象加载时就创建对象
    2. 可能存在资源量浪费问题
  2. 懒汉
    1. 在调用 getInstance 才会创建
    2. 有线程安全问题

一、饿汉

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.jhfuture.single_;

public class SingleTon01 {
public static void main(String[] args) {
/*
* 饿汉模式 --->只能有一个对象
* 1.构造器私有化 》防止直接 new
* 2.类的内部创建对象
* 3.向外暴露一个 getInstance方法。
* */

System.out.println(GirlFriend.getInstance());
System.out.println(GirlFriend.getInstance());

}
}


class GirlFriend{
private String name;

private static GirlFriend girlFriend = new GirlFriend("小谭");

public static GirlFriend getInstance(){
return girlFriend;
}
private GirlFriend(String name){
this.name=name;
}
}

二、懒汉

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.jhfuture.single_;
//懒汉模式
//
public class singleTon2 {
public static void main(String[] args) {
System.out.println(Cat.getInstance());
}
}
class Cat{
static Cat cat;
static int age=99;
private String name;
public static Cat getInstance(){
if (cat==null){
cat=new Cat("小红");
}
return cat;
}

public Cat(String name) {
System.out.println("调用了");
this.name = name;
}

@Override
public String toString() {
return name;
}
}