我可能会从“设计模式,可重用的面向对象程序设计的元素”这本书的这一部分中误解这句话。
上下文可以将自身作为参数传递给处理请求的State对象。这使State对象在必要时访问上下文。
如果传递了ConcreteState的上下文,Request(this);
该状态是否允许更改上下文本身?
在本例中,我正在处理Context是一个Windows Form
,其状态如FormStart
和FormStop
。我想进行更改,以便在更改状态时,表单中的某些按钮被禁用/显示为灰色。据我所知,ConcreteState的构造函数可以将上下文作为参数传递,然后状态可以对上下文进行更改。
我正在使用的定义是:
该州模式并不禁止状态,以进行更改Context
。
从部分引用的示例代码中的状态GoF的书的章节:
TCPState
[...]也可以更改状态TCPConnection
TCPConnection
就是Context
在这种情况下。
该代码显示了修改上下文的状态的另一个示例:
void TCPEstablished::Transmit(TCPConnection* t, TCPOctetStream* o) {
t->processOctet(o);
}
在中传输某些TCPConnection
内容可能会导致更改TCPConnection
。
因此,绝对可以。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句