Re: [請教] 請教strategy、state pattern in C++

作者: iamstudent (stu)   2011-04-23 20:17:56
我好像想出解法了
利用inner class來辦到
不過還沒有測試驗證
//原本的大class
class BigClass
{
private:
StateInterface::Inner _data;
StateInterface* _state;
public:
//設定狀態
inline void SetState(StateInterface* state)
{
_state = state;
_state->_inner = &_data;
}
//會變化功能的函數
inline void DoSomething()
{
_state->DoSomething();
}
}
//state 的共通介面
class StateInterface
{
protected:
friend BigClass
//原本的Data放這邊
class Inner
{
public:
...
}
Inner* _inner;
public:
//做事情的純虛擬函數
virtual void DoSomething()=0;
}
//其他繼承state的類別模式
class StateInitial : public StateInterface
{
public:
//實做
virtual void DoSomething();
}

Links booklink

Contact Us: admin [ a t ] ucptt.com