我们还需要定义一个兵种类来包含一个SoldierState对象,以便它是用来存储这些状态的,在本例中这个类的名字叫做KnightContext。
在本例中,这个兵种有3个状态——步兵、弓箭手和装甲兵。我们将这3个状态都继承于同一个基类SoldierState
如何实现这个切换的机制?我们一开始会想到,在步兵这个类中加入switch语句,然而这样的话,代码不利于扩展,不利于修改,这时我们就可以使用状态模式了。
假设我们正在做一个即时战略游戏,我们设计一个兵种,他在刚刚生产出来的时候是步兵,但是他可以切换武器,第一次切换会变成弓箭手,第二次切换会变成举着盾牌的装甲兵,第三次切换则又变成了步兵……
状态模式允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。
在本例中,这个兵种有3个状态——步兵、弓箭手和装甲兵。我们将这3个状态都继承于同一个基类SoldierState
如何实现这个切换的机制?我们一开始会想到,在步兵这个类中加入switch语句,然而这样的话,代码不利于扩展,不利于修改,这时我们就可以使用状态模式了。
假设我们正在做一个即时战略游戏,我们设计一个兵种,他在刚刚生产出来的时候是步兵,但是他可以切换武器,第一次切换会变成弓箭手,第二次切换会变成举着盾牌的装甲兵,第三次切换则又变成了步兵……
状态模式允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。