狀態模式(C++)
阿新 • • 發佈:2020-07-05
意圖:允許一個物件在其內部狀態改變時改變他的行為。
用途:
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));