这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
这几天过年放假没有新的课程,闲来无事我就决定看看一直久仰大名的设计模式(虽然Go连类都没有),看的书是《Head First 设计模式》,记录一些书中的要点。
第五章要点(单例模式-Singleton)
- 单件模式确保程序中一个类最多只有一个实例。
- 单件模式也提供访问这个实例的全局点。
- 在Java中实现单件模式需要私有的构造器、一个静态方法和一个静态变量。
- 确定在性能和资源上的限制,然后小心地选择适当的方案来实现单件,以解决多线程的问题(我们必须认定所有的程序都是多线程的)。
- 如果不是采用第五版的Java2,双重检查加锁实现会失效。
- 小心,你如果使用多个类加载器,可能导致单件失效而产生多个实例。
- 如果使用JVM1.2或之前的版本,你必须建立单件注册表,以免垃圾收集器将单件回收。
第六章要点(命令模式-Command)
- 命令模式将发出请求的对象和执行请求的对象解耦。
- 在被解耦的两者之间是通过命令对象进行沟通的。命令对象封装了接收者和一个或一组动作。
- 调用者通过调用命令对象的execute(O发出请求,这会使得接收者的动作被调用。
- 调用者可以接受命令当做参数,甚至在运行时动态地进行。
- 命令可以支持撤销,做法是实现一个undo(O方法来回到execute()被执行前的状态。
- 宏命令是命令的一种简单的延伸,允许调用多个命令。宏方法也可以支持销。
- 实际操作时,很常见使用“聪明”命令对象,也就是直接实现了请求,而不是将工作委托给接收者。
- 命令也可以用来实现日志和事务系统。