引子
场景
在我们软件开发的进程中,有许多对象是有状况的。而对象的行为会随着状况的转变而产生转变。例如开发一个电梯类,电梯有开门、关门、停滞、运行等行为,同时电梯也会有开门状况、关门状况、停滞状况、运行状况等不同的状况。电梯处于不同的状况时,对不同的行为会做出不同的动作。如当电梯处于开门状况时,电梯可以做关门动作;开门状况时,电梯必定是停滞的,所以此时停滞动作不会产生任何行为;开门状况时,电梯不能运行,所以运行为作也不会产生任何行为。如果我们应用条件断定语句实现上图逻辑,会涌现大批的if else断定,或switch case 语句。而且当须要增长一个状况时,这些条件断定语句都须要修正。例如增长一个维修状况,不但会修正原本的if else,还有引入维修状况的断定和履行逻辑。在我们软件开发的进程中,有许多对象是有状况的。而对象的行为会随着状况的转变而产