策略模式
[TOC]
类型
行为型模式
简介
一个类(Context)的行为或算法(Strategy)可以在运行时进行改变
解决问题
多算法相似情况下,避免if...else 写法,降低系统复杂度
解决办法
类似算法封装为实现统一接口的策略类,context按需动态切换需要的strategy
UML
理解
策略超过4个,可以考虑使用混合模式,避免策略类膨胀
抽象行为后,针对不同情况可以动态切换策略(context判断如何选择策略,不在该模式讨论范围,可以参考一下状态模式)
引用:
与状态模式的比较
状态模式的类图和策略模式类似,并且都是能够动态改变对象的行为。但是状态模式是通过状态转移来改变 Context 所组合的 State 对象,而策略模式是通过 Context 本身的决策来改变组合的 Strategy 对象。所谓的状态转移,是指 Context 在运行过程中由于一些条件发生改变而使得 State 对象发生改变,注意必须要是在运行过程中。
状态模式主要是用来解决状态转移的问题,当状态发生转移了,那么 Context 对象就会改变它的行为;而策略模式主要是用来封装一组可以互相替代的算法族,并且可以根据需要动态地去替换 Context 使用的算法。
网友评论