diff --git a/docs/notes/03. 使用私有构造方法或枚类实现Singleton属性.md b/docs/notes/03. 使用私有构造方法或枚类实现Singleton属性.md index b949be1..98ea174 100644 --- a/docs/notes/03. 使用私有构造方法或枚类实现Singleton属性.md +++ b/docs/notes/03. 使用私有构造方法或枚类实现Singleton属性.md @@ -35,7 +35,7 @@ public class Elvis {   静态工厂方法的一个优点是,它可以灵活地改变你的想法,无论该类是否为单例而不必更改其 API。 工厂方法返回唯一的实例,但是可以修改,比如,返回调用它的每个线程的单独实例。 第二个好处是,如果你的应用程序需要它,可以编写一个泛型单例工厂(generic singleton factory )(详见第30 条)。 使用静态工厂的最后一个优点是方法引用可以用 `supplier`,例如 `Elvis::instance` 等同于 `Supplier`。 除非与这些优点相关的,否则公共属性方法是可取的。 -  创建一个使用这两种方法的单例类(第 12 章),仅仅将 `implements Serializable` 添加到声明中是不够的。为了维护单例的保证,声明所有的实例属性为 `transient`,并提供一个 `readResolve` 方法(详见第 89条)。否则,每当序列化实例被反序列化时,就会创建一个新的实例,在我们的例子中,导致出现新的 Elvis 实例。为了防止这种情况发生,将这个 `readResolve` 方法添加到 Elvis 类: +  创建一个使用这两种方法的单例类(第 12 章),仅仅将 `implements Serializable` 添加到声明中是不够的。为了保证单例模式不被破坏,声明所有的实例属性为 `transient`,并提供一个 `readResolve` 方法(详见第 89 条)。否则,每当序列化实例被反序列化时,就会创建一个新的实例,在我们的例子中,导致出现新的 Elvis 实例。为了防止这种情况发生,将这个 `readResolve` 方法添加到 Elvis 类: ```java // readResolve method to preserve singleton property