题目描述
允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类
这什么意思额?????前半句我的理解是。对象在一个状态转变为另一个状态时,他的行为随之而改变。后半句完全看不懂了,有大神可以详细说一下吗??
允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类
这什么意思额?????前半句我的理解是。对象在一个状态转变为另一个状态时,他的行为随之而改变。后半句完全看不懂了,有大神可以详细说一下吗??
这句话大概是说:对象的行为发生了变化,看起来就好像不属于原来的类了。其实也不是看起来,状态模式中,context把行为委托给state的具体是实现去执行,当状态发生改变时,也就是执行动作的state对象发生了改变,也就是说,state已经不是原来的实现类的对象了。但是这里所说的“对象”应该指的时context对象,而context对象本身并没有发生改变,所以就说是“似乎改变了它的类”。
需要一些例子来理解,可以很实际,比如JDK中的集合类很多就有这种特性。
“允许一个对象在其内部状态改变时改变它的行为”
List对象size()方法返回值根据 List包含的对象数量变化而变化。
可能还有更贴切的例子,暂时只想到这个。
。。。题主是把考试选择题拿出来了。。。
这种形而上的问题映射到实际各人有各人看法。
网上的说法是:将不同对象下的行为单独提取出来封装在具体的状态类中,使得环境类对象在其内部状态改变时可以改变它的行为,对象看起来是很修改了它的类,而实际上是由于切换到不同具体状态实现的。
其实你先找个状态模式的demo写个测试,随便C++还是java,大概就能明白了
4 回答1.4k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答741 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
状态模式更像是一种代理,将自己的行为包办给状态。那么如果改变了状态,对象看起来似乎修改了它自己的“class”,变成了另一个类。