1. 程式人生 > 實用技巧 >狀態模式(C++)

狀態模式(C++)


意圖:允許一個物件在其內部狀態改變時改變他的行為。

用途:

1. 一個物件的行為取決於他的狀態,並且他必須在執行時根據狀態改變行為。

2.一個操作中含有龐大的多分支的條件語句。這個狀態通常用一個或多個列舉常量表示。通常多個操作包含這一 相同的條件結構 。State模式將每個條件分支放入一個獨立的類中。這使得你可以根據物件的自身情況將物件 的狀態作為一個物件,這一物件可以不依賴於其他物件而獨立變化。

程式碼如下:

測試如下:

  CRectState* rectState = new CRectState(m_pStateManager);
    CCircleState* circleState = new CCircleState(m_pStateManager);
    CTriangleState* triangleState = new CTriangleState(m_pStateManager);
    m_pStateManager->addState(rectState);
    m_pStateManager->addState(circleState);
    m_pStateManager->addState(triangleState);

    m_pStateManager->getCurrentState()->mouseDown(QPoint(10,20));
    m_pStateManager->setCurrentState(rectState);
    m_pStateManager->getCurrentState()->mouseDown(QPoint(30,50));