类图
代码
Context
1 | class Context { |
State
1 | abstract class State { |
OpenState
1 | class OpenSate extends State{ |
CloseState
1 | class CloseState extends State{ |
测试类
1 | public class Main { |
总结
概述
状态模式适用于
对象的行为依赖于它的状态,且随着状态的改变会改变它的相关行为
优点
封装了转换规则
可以让多个环境共享一个状态对象,从而减少系统中状态的个数
缺点
类、对象个数的增加、复杂度的增加
对开闭原则的支持不太好,如果有新增状态或者新增行为会较为繁琐