Python设计模式(二)
命令模式
命令模式是一种行为设计模式,它将请求封装成一个对象,从而允许你使用不同的请求、队列或日志来参数化其他对象,并且支持请求的撤销与恢复。
document = Document("a_file.txt")
shortcut = KeyboardShortcut()
save_command = SaveCommand(document)
shortcut.command = save_command
上述代码展示了命令模式的一种实现,让调用者调用可调用对象而非带有 execute
方法的命令对象,这不仅没有带来限制,反而增加了灵活性。我们既可以在合适时直接链接函数,也能在必要时构建完整的可调用命令对象。
命令模式常被扩展以支持可撤销命令。例如,文本程序可将每次插入操作封装在一个单独的命令中,该命令不仅有 execute
方法,还有用于删除插入内容的 undo
方法;图形程序可将每个绘图动作(如矩形、线条、手绘像素等)封装在一个命令中,该命令的 undo
方法可将像素重置为原始状态。在这些情况下,命令模式的解耦特性尤为有用,因为每个动作都需保存足够的状态,以便后续撤销操作。
抽象工厂模式
抽象工厂模式通常用于有多种系统实现方案,且这些实现依赖于某些配置或平台因素的场景。调用代码从抽象工厂请求对象,却并不清楚返回对象的具体类。返回的底层实现可能取决于多种因素,如当前区域设置、操作系统或本地配