⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c20-状态模式例.txt

📁 C++课件,很好用的,帮助大家学习C++.
💻 TXT
字号:
//状态模式例

class TCPState;
classs TCPConnection 
{
public:	
	TCPConnection() 
		{_state=TCPColsed::Instance();}

	void ActiveOpen() 
		{_state->ActiveOpen();}
	void PassiveOpen()	
		{_state=PassiveOpen();}
	void Close()
		{_state->Close(this);}		
	void Send();
	void Acknowledge()
		{_state->Acknowledge(this);}
	void Synchronize()
		{_state->Synchronize(this);}

	void ChangeState(TCPState * s) 	
		{_state=s;}
private:
	TCPState   * _state; 
};

class TCPState
{
public:
	virtual void ActiveOpen(TCPConnection * cnn) {}
	virtual void PassiveOpen(TCPConnection * cnn) {}
	virtual void Close(TCPConnection * cnn) {}
	virtual void Acknowledge(TCPConnection * cnn) {}
	virtual void Synchronize(TCPConnection * cnn) {}
	virtual void Send(TCPConnection * cnn) {}
protected:
	void ChangeState(TCPConnection * cnn,TCPState * sta)
	{	cnn->ChangeState(sta);	}
};

class TCPEstablished:public TCPState
{
public:
	static TCPState * Instance();
	virtual void Close(TCPConnection * cnn)
		{ChangeState(cnn,TCPListen::Instance());}
};
class TCPListen:public TCPState
{
public:
               static TCPListen * Instance();
	virtual void Send(TCPConnection * cnn) 
		{ChangeState(cnn,TCPEstablished::Instance());}	
};

class TCPClosed:public TCPState
{
public:
	static TCPState * Instance();	
	virtual void ActiveOpen(TCPConnection * cnn)
		 {ChangeSate(cnn,TCPEstablished::Instance());}
	virtual void PassiveOpen(TCPConnection * cnn) 
		{ChangeState(cnn,TCPListen::Instance());}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -