糖果機(jī)的實(shí)現(xiàn):糖果機(jī)有四個(gè)狀態(tài)NoQuarterHasQuarterSoldSoldOut
 影響糖果機(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)模式