定义
允许一个对象在其内部状态改变时改变它的行为。
案例
比如一个表示网络连接的类TCPConnection,它有不同的状态:连接已建立(Established),正在监听(Listening),连接已关闭(Closed)。当这个TCPConnection收到其他对象请求时,根据自身不同状态做出不同的响应。使用State模式处理这类问题的时候,引入一个TCPState类,它提供了所有正对TCPConnection不同状态操作的一个公共接口。
TCPConnection提供了一个传送数据的接口并处理改变状态的请求:
Class TCPConnection
{
public:
TCPConnection();
void activeOPen();
void passiveOpen();
void close();
void send();
protected:
friend class TCPState;
void changeState(TCPState* state);
private:
TCPState*