状态模式定义没懂

允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类

这什么意思额?????前半句我的理解是。对象在一个状态转变为另一个状态时,他的行为随之而改变。后半句完全看不懂了,有大神可以详细说一下吗??


婷婷同学_
浏览 646回答 3
3回答

临摹微笑

这句话大概是说:对象的行为发生了变化,看起来就好像不属于原来的类了。其实也不是看起来,状态模式中,context把行为委托给state的具体是实现去执行,当状态发生改变时,也就是执行动作的state对象发生了改变,也就是说,state已经不是原来的实现类的对象了。但是这里所说的“对象”应该指的时context对象,而context对象本身并没有发生改变,所以就说是“似乎改变了它的类”。

饮歌长啸

需要一些例子来理解,可以很实际,比如JDK中的集合类很多就有这种特性。“允许一个对象在其内部状态改变时改变它的行为”List对象size()方法返回值根据 List包含的对象数量变化而变化。可能还有更贴切的例子,暂时只想到这个。
打开App,查看更多内容
随时随地看视频慕课网APP