小A:“操作型模式有什麼要點呢?”
大B:“State模式將所有與一個特定狀態相關的行爲都放入一個State的子類對象中,在對象狀態切換時,切換響應的對象;但同時維持State的接口,這樣實現了具體操作與狀態轉換之間的解藕。爲不同的狀態引入不同的對象使得狀態轉換變得更加明確,而且可以保證不會出現狀態不一致的情況,因爲轉換是原子性的——即要麼徹底轉換過來,要麼不轉換。如果State對象沒有實例變量,那麼各個上下文可以共享同一個State對象,從而節省對象開銷。這種模式避免了我們寫大量的ifelse或switchcase語句,但是很有可能會導致某些系統有過多的具體狀態類,並且由此導致開發人員可能會對所有的狀態類有所遺漏。”