状态模式中的行为由状态来决定,其把对象的行为包装在不同的状态对象里。当一个对象的内在状态改变的时候,其行为也随之改变,这个对象看起来好像是改变了其类。
使用场景:一个对象的行为取决于它的状态,运行时根据状态来改变它的行为;代码中包含大量与对象状态有关的条件语句
通用UML:
优点:将所有与一个特定的状态相关的行为都放入一个状态对象,提供更好的方法来组织与特定状态相关的代码,将繁琐的状态判断转换为结构清晰的状态类族,保证可扩展和可维护性
缺点:增加类和对象的个数
状态模式的最典型的应用就是手机的wifi模块,未开启,已开启未连接,已连接等状态下,wifi模块的行为不同。