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