“让一个对象的行为随着内部状态的改变而变化,而该对象也像是换了类一样”
实际上是该对象有一个状态类的属性或字段,状态类一般是接口类,可以有具体的几个状态子类,而状态类父类里也有该对象的引用,利用这个引用可以更改对象的状态类在不同的状态子类中切换,有点像有限状态自动机的那种感觉。
举例:小明有学霸,学渣,学神三种学习状态,学习状态本身有小明的引用,小明也有学习状态的引用,小明在学霸状态的时候,由于突然失恋,学霸状态通过引用的小明对象更改了小明的学习状态为学渣状态,而过了一段时间,小明渐渐恢复过来,学渣状态就自动更改为学神状态。
利用状态模式,要注意设置初始状态,将小明初始状态设置为学神模式,然后就放手让模式自己根据条件更改。
如果要增加新状态女装状态,就添加女装子类,并设置在自己和其他状态子类添加转换条件即可。
网友评论