知识卡片

单件可被替换

普通读书笔记卡 · 1920.e.1

内容

设计良好的单件仍应允许子类化或替换实例,否则全局访问点会把实现锁死。发散:真正的问题不是“只有一个”,而是调用者是否被迫知道这个唯一对象的具体类。

参考来源

- 位置:第3章《创建型模式》3.5节「Singleton(单件)」8.效果第3、4点及9.实现「创建Singleton类的子类」(源文件:_epub-src/OEBPS/Text/part0067.xhtml) - 结论依据:原文明确说明单件应允许对操作和表示的精化——Singleton类可以有子类且用扩展类的实例配置应用很容易,也允许可变数目的实例,直接支持卡片对设计良好的单件仍应允许子类化或替换实例、否则全局访问点会把实现锁死的论述。 - 原始内容:"允许对操作和表示的精化:Singleton类可以有子类,而且用这个扩展类的实例来配置一个应用是很容易的。你可以用你所需要的类的实例在运行时配置应用……允许可变数目的实例:这个模式使得你易于改变你的想法,并允许Singleton类的多个实例。"