Skip to content

Commit

Permalink
Merge pull request #424 from marszhangzhixing/patch-7
Browse files Browse the repository at this point in the history
Update 2020-05-31-重学 Java 设计模式《实战单例模式》.md
  • Loading branch information
fuzhengwei authored May 28, 2024
2 parents 814892b + fa33db2 commit ce11e40
Showing 1 changed file with 4 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ public class Singleton_00 {
}
```

- 以上这种方式在我们平常的业务开发中非常常见,这样静态类的方式可以在第一次运行的时候直接初始化Map类,同时这里我们也不需要到延迟加载在使用
- 在不需要维持任何状态下,仅仅用于全局访问,这个使用使用静态类的方式更加方便
- 以上这种方式在我们平常的业务开发中非常常见,这样静态类的方式可以在第一次运行的时候直接初始化Map类,同时这里我们也不需要到延迟加载再使用
- 在不需要维持任何状态下,仅仅用于全局访问,这个使用静态类的方式更加方便
- 但如果需要被继承以及需要维持一些特定状态的情况下,就适合使用单例模式。

### 1. 懒汉模式(线程不安全)
Expand Down Expand Up @@ -162,7 +162,7 @@ public class Singleton_04 {
}
```

- 使用类的静态内部类实现的单例模式,既保证了线程安全有保证了懒加载,同时不会因为加锁的方式耗费性能。
- 使用类的静态内部类实现的单例模式,既保证了线程安全又保证了懒加载,同时不会因为加锁的方式耗费性能。
- 这主要是因为JVM虚拟机可以保证多线程并发访问的正确性,也就是一个类的构造方法在多线程环境下可以被正确的加载。
- 此种方式也是非常推荐使用的一种单例模式

Expand Down Expand Up @@ -250,7 +250,7 @@ public void test() {
Singleton_07.INSTANCE.test();
```

*这种写法在功能上与共有域方法相近,但是它更简洁,无偿地提供了串行化机制,绝对防止对此实例化,即使是在面对复杂的串行化或者反射攻击的时候。虽然这中方法还没有广泛采用,但是单元素的枚举类型已经成为实现Singleton的最佳方法。*
*这种写法在功能上与共有域方法相近,但是它更简洁,无偿地提供了串行化机制,绝对防止对此实例化,即使是在面对复杂的串行化或者反射攻击的时候。虽然这种方法还没有广泛采用,但是单元素的枚举类型已经成为实现Singleton的最佳方法。*

但也要知道此种方式在存在继承场景下是不可用的。

Expand Down

0 comments on commit ce11e40

Please sign in to comment.