糖果機(jī)的實(shí)現(xiàn):糖果機(jī)有四個(gè)狀態(tài)NoQuarter、HasQuarter、Sold、SoldOut。
影響糖果機(jī)的行為有:<1>.投25分硬幣insertQuarter();<2>退幣ejectQuarter();<3>轉(zhuǎn)動(dòng)曲柄turnCrank();<4>分發(fā)糖果dispense()
分析:四個(gè)狀態(tài)和四個(gè)行為決定糖果機(jī)要做出的響應(yīng),即4*4 種響應(yīng)。
1普通想法:int state;//狀態(tài)
定義四個(gè)整型常量表示四個(gè)狀態(tài) final static int NoQuarter = 0、final static int HasQuarter = 1、~ ~ ~
四個(gè)行為的每個(gè)行為實(shí)現(xiàn)時(shí),都要用if判斷當(dāng)前state狀態(tài),根據(jù)四個(gè)狀態(tài)作具體實(shí)現(xiàn) 。
此想法,沒(méi)有好好利用,面向?qū)ο蟮奶匦?/span>。
2有趣的想法:使用狀態(tài)模式實(shí)現(xiàn)。
定義一個(gè)抽象狀態(tài)接口IState、四個(gè)具體實(shí)現(xiàn)類內(nèi)部分別都實(shí)現(xiàn)自己的四種行為。通過(guò)使用多態(tài),同樣也實(shí)現(xiàn)了16種響應(yīng)。
狀態(tài)模式