1. 程式人生 > >狀態模式學習---轉載

狀態模式學習---轉載

https://blog.csdn.net/hguisu/article/details/7557252

定義

允許物件在內部狀態改變時改變他的行為,物件看起來好像修改了他的類

角色組成

context 類,擁有一些內部狀態,得有個變數說明當前狀態
State 介面,定義了一個所有具體狀態的介面
ConcreteStateN state的實現類,可以有很多個不同狀態類,最好存有context引用

優缺點

  1. 狀態和事物類很好的解耦,不必為一大堆的狀態編寫一堆if或switch,這些語句很難維護
  2. 每個狀態遵守了“對修改關閉,對擴充套件開放”原則
  3. 多出很多的類,但相比把上面所列舉帶來益處,絕對值得