2026年10月押题密卷 · 选择题

以下关于状态(State) 模式和策略(Strategy) 模式的叙述中,错误的是( )。

A. 对于客户程序而言, State 模式比Strategy 模式更透明
B. Strategy 模式用来处理算法变化, State 模式用来处理状态变化
C. State 模式的对象变化频率比Strategy 模式的对象高
D. State 模式的“状态”是在对象外部,Strategy 模式的“策略”是在对象内部
参考答案:D

[解析] State (状态)模式的设计意图是:允许一个对象在其内部状态改变时变更它的行为。而 strategy (策略)模式的设计意图是:定义一系列的算法,把它们一个一个地封装起来,并且使它们 可相互替换。可见,Strategy 模式用来处理算法变化,而State 模式则是处理状态变化。 Strategy 模式在概念结构上与State 模式非常相似,但它们各自的目的不同。区分这两个模式 的关键是看行为是由状态驱动还是由一组算法驱动。通常情况下,State 模式的“状态”是在对象内 部的,Strategy 模式的“策略”可以在对象外部。 在Strategy 模式中,算法是否变化完全是由客户程序开始决定的,而且往往一次只能选择一种 算法,不存在算法中途发生变化的情况。而State 模式如其定义中所言,在它的生命周期中随时存在 着状态的转变和行为的更改,而且状态变化是一个线形的整体。对于客户程序而言,这种状态变化往 往是透明的。