模式定义:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。(Allow an object to alter its behavior when its internal state changes. The object will appear to change its class)
具体说明:行为型模式。状态模式将对象的行为用状态类的行为来实现,对对象所有可能出现的状态都需要创建一个状态类,这些类继承于同一个状态父类。由于对象包含一个状态父类的指针,当对象的内部状态发生改变时,便将对象内状态指针指向具体不同的状态子类对象(或者实现为不同的状态子类对象)。这时,由于对象的行为是由状态的行为来实现的,调用对象的方法就间接的调用了对象内部状态指针的方法, 由状态指针的多态性,体现到外部对象上即改变了对象的行为。
模式应用:1)游戏中角色的技能系统,当技能的熟练度(该技能使用次数)不同时,对怪物所造成的伤害也不同; 2)网上商城的积分系统,当积分不同是,同样的打折行为折扣率不同,比如100分以下为铜牌会员,打折行为只能打9折,101-300分以下为银牌会员,打折行为是打8折,301-500分为金牌会员,打7折。
UML图示:
****************************************************************************************************