知识卡片
策略模式与桥梁模式类图相同但意图不同
内容
策略模式和桥梁模式在特定简化下类图可完全重合,区别只能从意图分辨:策略模式是 行为模式,把”给定输入产生某种结果”的处理方式当作可替换算法;桥梁模式是结构模式,让 抽象部分和实现部分在不破坏封装前提下各自独立扩展。发散:邮件案例对比——策略模式只把 文本/超文本两种格式看作算法,桥梁模式进一步把邮件服务器也变成独立可扩展维度,格式× 服务器可自由组合。
参考来源
- 位置:《设计模式之禅(第2版)》第33章《跨战区PK》33.1节(源文件:_epub-src/text/part0147.html)
- 结论依据:原文用邮件发送案例分别以策略模式(只区分TextMail/HtmlMail两种封装算法)和桥梁模式(同时让MailTemplate和MailServer两条继承体系独立扩展,如Postfix/SendMail两种邮件服务器)实现同一需求,总结"策略模式是使用继承和多态建立一套可以自由切换算法的模式,桥梁模式是在不破坏封装的前提下解决抽象和实现都可以独立扩展的模式"。
- 原始内容:策略模式是一个行为模式,旨在封装一系列的行为……而桥梁模式则是解决在不破坏封装的情况下如何抽取出它的抽象部分和实现部分,它的前提是不破坏封装,让抽象部分和实现部分都可以独立地变化……简单来说,策略模式是使用继承和多态建立一套可以自由切换算法的模式,桥梁模式是在不破坏封装的前提下解决抽象和实现都可以独立扩展的模式。