在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 狀態(tài)模式定義沒懂

狀態(tài)模式定義沒懂

題目描述

允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為,對(duì)象看起來似乎修改了它的類

這什么意思額?????前半句我的理解是。對(duì)象在一個(gè)狀態(tài)轉(zhuǎn)變?yōu)榱硪粋€(gè)狀態(tài)時(shí),他的行為隨之而改變。后半句完全看不懂了,有大神可以詳細(xì)說一下嗎??

回答
編輯回答
怪痞

。。。題主是把考試選擇題拿出來了。。。
這種形而上的問題映射到實(shí)際各人有各人看法。
網(wǎng)上的說法是:將不同對(duì)象下的行為單獨(dú)提取出來封裝在具體的狀態(tài)類中,使得環(huán)境類對(duì)象在其內(nèi)部狀態(tài)改變時(shí)可以改變它的行為,對(duì)象看起來是很修改了它的類,而實(shí)際上是由于切換到不同具體狀態(tài)實(shí)現(xiàn)的。
其實(shí)你先找個(gè)狀態(tài)模式的demo寫個(gè)測(cè)試,隨便C++還是java,大概就能明白了

2017年3月28日 15:34
編輯回答
淺淺

狀態(tài)模式更像是一種代理,將自己的行為包辦給狀態(tài)。那么如果改變了狀態(tài),對(duì)象看起來似乎修改了它自己的“class”,變成了另一個(gè)類。

2018年1月23日 01:48
編輯回答
命于你

這句話大概是說:對(duì)象的行為發(fā)生了變化,看起來就好像不屬于原來的類了。其實(shí)也不是看起來,狀態(tài)模式中,context把行為委托給state的具體是實(shí)現(xiàn)去執(zhí)行,當(dāng)狀態(tài)發(fā)生改變時(shí),也就是執(zhí)行動(dòng)作的state對(duì)象發(fā)生了改變,也就是說,state已經(jīng)不是原來的實(shí)現(xiàn)類的對(duì)象了。但是這里所說的“對(duì)象”應(yīng)該指的時(shí)context對(duì)象,而context對(duì)象本身并沒有發(fā)生改變,所以就說是“似乎改變了它的類”。

2017年4月27日 05:57
編輯回答
浪婳

需要一些例子來理解,可以很實(shí)際,比如JDK中的集合類很多就有這種特性。

“允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為”

List對(duì)象size()方法返回值根據(jù) List包含的對(duì)象數(shù)量變化而變化。

可能還有更貼切的例子,暫時(shí)只想到這個(gè)。

2017年5月15日 00:39