設計模式(十五):狀態模式

優勢:spa

  ① 將與特定狀態相關的行爲局部化,而且將不一樣狀態的行爲分割開。code

缺點:對象

  ① 可能出現大量狀態類。blog

適用範圍:排序

  當一個對象的行爲取決於他的狀態,並且他必須在運行時刻根據狀態改變他的行爲,就要考慮此模式。事件

  一個操做中含有龐大的分支機構,而且這些分支決定於對象的狀態。it

客戶端: class

  Work work = new Work();//初始化給work狀態賦值
  work.setHour(9); //給work時間賦值
  work.writeProgram(); //判斷現狀

  work.setHour(19); //給work時間賦值方法

  work.setFinsh(true); //打斷的事件,工做完成便可下班,沒必要再繼續加班im

  work.writeProgram(); //判斷現狀

一句話歸納:

  根據不一樣的工做時間,自動切換顯示不一樣的狀態,如上午精神,下午疲憊等

    /**
     * State (狀態是抽象類)
     * ForenoonState  NoonState  AfternoonState  EveningState  RestState  SleepState -- 基本按時間段順序固定排序
     * (各自實例化State,根據時間範圍及相關條件來判斷是否處於當前狀態,若不是,則轉入下一個時間段的狀態。)
     *
     * Work (設置開始狀態、設置時間、進入序列判斷顯示現狀等方法)
     *
     */
相關文章
相關標籤/搜索