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