状态模式学习---转载

https://blog.csdn.net/hguisu/article/details/7557252

定义

允许对象在内部状态改变时改变他的行为,对象看起来好像修改了他的类

角色组成

context 类,拥有一些内部状态,得有个变量说明当前状态
State 接口,定义了一个所有具体状态的接口
ConcreteStateN state的实现类,可以有很多个不同状态类,最好存有context引用

优缺点

  1. 状态和事物类很好的解耦,不必为一大堆的状态编写一堆if或switch,这些语句很难维护
  2. 每个状态遵守了“对修改关闭,对扩展开放”原则
  3. 多出很多的类,但相比把上面所列举带来益处,绝对值得

猜你喜欢

转载自blog.csdn.net/weixin_36957153/article/details/83274771