1、组合模式:
一个类包含很多类的实例,作为这些类对象的调用入口。将工作委派给这些对象执行,他处理结果并返回。
2、桥接模式、 状态模式和策略模式:
桥接模式、 状态模式和策略模式(在某种程度上包括适配器模式、模板方法模式)的接口非常相似。 实际上, 它们都基于组合模式——即将工作委派给其他对象,不过也各自解决了不同的问题。 模式并不只是以特定方式组织代码的配方, 你还可以使用它们来和其他开发者讨论模式所解决的问题。
3、模板方法模式与策略模式对比:
1、模板方法模式基于继承机制: 它允许你通过扩展子类中的部分内容来改变部分算法。
个人理解:选择不同的子类(即选择了不同的算法)进行算法的执行,因此是静态的。
2、策略基于组合机制: 你可以通过对相应行为提供不同的策略来改变对象的部分行为。
个人理解:对不同判断条件,执行不同分支(new 不同类对象)进行算法执行,运行期切换,因此动态的。
4、总结:
模板方法在类层次上运作,因此它是静态的。策略在对象层次上运作,因此允许在运行时切换行为。
参考资料:
设计模式–>行为模式–>策略模式:https://refactoringguru.cn/design-patterns/strategy