狀態設計模式

狀態模式,又稱狀態對象模式(Pattern of Objects for States),狀態模式是對象的行爲模式3d

 

部分代碼:對象

所謂對象的狀態,一般指的就是對象實例的屬性的值blog

  • 而行爲指的就是對象的功能,再具體點說,行爲大多能夠對應到方法上

狀態模式的功能就是分離狀態的行爲,經過維護狀態的變化,來調用不一樣狀態對應的不一樣功能配置

  • 也就是說,狀態和行爲是相關聯的,它們的關係能夠描述爲:狀態決定行爲

  • 所謂平行性指的是各個狀態的行爲所處的層次是同樣的,相互獨立的、沒有關聯的,是根據不一樣的狀態來決定到底走平行線的哪一條
  • 行爲是不一樣的,固然對應的實現也是不一樣的,相互之間是不可替換的

  • 平等性強調的是可替換性,你們是同一行爲的不一樣描述或實現,所以在同一個行爲發生的時候,能夠根據條件挑選任意一個實現來進行相應的處理

你們可能會發現狀態模式的結構和策略模式的結構徹底同樣,可是,它們的目的、實現、本質倒是徹底不同的方法

  • 還有行爲之間的特性也是狀態模式和策略模式一個很重要的區別,狀態模式的行爲是平行性的,不可相互替換的;
  • 而策略模式的行爲是平等性的,是能夠相互替換的

環境和狀態處理對象im

  • 在狀態模式中,環境(Context)是持有狀態的對象,可是環境(Context)自身並不處理跟狀態相關的行爲,而是把處理狀態的功能委託給了狀態對應的狀態處理類來處理。
  • 在具體的狀態處理類中常常須要獲取環境(Context)自身的數據,甚至在必要的時候會回調環境(Context)的方法,所以,一般將環境(Context)自身看成一個參數傳遞給具體的狀態處理類
  •  客戶端通常只和環境(Context)交互。客戶端能夠用狀態對象來配置一個環境(Context),一旦配置完畢,就再也不須要和狀態對象打交道了。客戶端一般不負責運行期間狀態的維護,也不負責決定後續到底使用哪個具體的狀態處理對象。
相關文章
相關標籤/搜索