<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ~~~ /* State 狀態模式: 當一個對象的內在狀態改變時,允許改變其行為,這個對象看起來像是改變了其類 個人想法:UML圖很相似,策略模式是用在對多個做同樣事情(統一接口)的類對象的選擇上, 而狀態模式是:將對某個事情的處理過程抽象成接口和實現類的形式, 由context保存一份state,在state實現類處理事情時,修改狀態傳遞給context, 由context繼續傳遞到下一個狀態處理中, 作者: HCLAC 日期: 20170309 */ package state import ( "fmt" ) // 工作類 --context type Work struct { hour int state State } func (w *Work) Hour() int { if w == nil { return -1 } return w.hour } func (w *Work) State() State { if w == nil { return nil } return w.state } func (w *Work) SetHour(h int) { if w == nil { return } w.hour = h } func (w *Work) SetState(s State) { if w == nil { return } w.state = s } func (w *Work) writeProgram() { if w == nil { return } w.state.writeProgram(w) } func NewWork() *Work { state := new(moringState) return &Work{state: state} } type State interface { writeProgram(w *Work) } // 上午時分狀態類 type moringState struct { } func (m *moringState) writeProgram(w *Work) { if w.Hour() < 12 { fmt.Println("現在是上午時分", w.Hour()) } else { w.SetState(new(NoonState)) w.writeProgram() } } // 中午時分狀態類 type NoonState struct { } func (m *NoonState) writeProgram(w *Work) { if w.Hour() < 13 { fmt.Println("現在是中午時分", w.Hour()) } else { w.SetState(new(AfternoonState)) w.writeProgram() } } // 下午時分狀態類 type AfternoonState struct { } func (m *AfternoonState) writeProgram(w *Work) { if w.Hour() < 17 { fmt.Println("現在是下午時分", w.Hour()) } else { w.SetState(new(EveningState)) w.writeProgram() } } // 晚上時分狀態類 type EveningState struct { } func (m *EveningState) writeProgram(w *Work) { if w.Hour() < 21 { fmt.Println("現在是晚上時分", w.Hour()) } else { fmt.Println("現在開始睡覺", w.Hour()) } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看