PHP设计模式状态(状态模式)
状态模式之一是GOF23模式,以及命令模式,也是一种行为模式,状态模式是命令模式很相似,它的接口实现该类的应用程序,界面的编程原则的体现。状态模式属于对象创建模式。其目的是允许一个对象在其内部状态改变它的行为变化,而目标似乎已经修改了它的类。一个常见的例子是一个表示网络连接类TCP连接。一个TCP连接对象的状态是处于不同的状态:连接建立(建立),和听,和连接已关闭(关闭),当一个TCP连接对象和另一个对象接收到一个请求,他让不同的反应,根据他自己的国家。
例如,一个请求的结果取决于连接被关闭或已建立连接的状态模式描述了TCP连接,显示在每个国家不同的行为。这种模式的核心思想是一个抽象的类称为tcpstate介绍说网络的连接状态,表示不同类操作状态声明为各种tcpstate公共接口,tcpstate类实现特定的状态相关的行为。例如,在tcpestablished和tcpclosed类实现了一个已建立的连接,并连接到一个特定的一个TCP连接,连接的封闭状态的行为,分别。
例如,一个人有愤怒、高兴和疯狂的状态。在这种情况下,做同样的事情可能会有不同的结果。一个人的情绪可能是这三个国家发生了变化。一个moodstate类的使用代表了一个人的心情,和疯狂的,快乐的,愤怒的类代表不同的感受。
先看一个例子。
复制代码代码如下所示:
< PHP
/ * *
*状态模式
*
*允许对象在内部状态发生变化时改变其行为,而对象似乎改变了它所属的类。
*
* /
界面态
{
公共函数句柄($状态);
公共功能显示器();
}
课堂语境
{
私人_state美元= null;
公共功能__construct(合状态)
{
美元-> setstate(合状态);
}
公共职能setstate($状态)
{
美元-> _state = $状态;
}
公共功能请求()
{
这_state美元-> ->显示();
美元_state ->处理->(美元);
}
}
类的状态进行状态
{
公共函数句柄($上下文)
{
为背景-> setstate(新stateb());
}
公共功能显示器()
{
回声状态A;
}
}
类stateb实现状态
{
公共函数句柄($上下文)
{
为背景-> setstate(新状态());
}
公共功能显示器()
{
回声状态B;
}
}
类的状态进行状态
{
公共函数句柄($上下文)
{
为背景-> setstate(新联盟());
}
公共功能显示器()
{
回声状态C;
}
}
一个实例
objcontext美元=新的上下文(新stateb());
objcontext美元->请求();
objcontext美元->请求();
objcontext美元->请求();
objcontext美元->请求();
objcontext美元->请求();
理解状态模式的关键是2点:
1。在通常的命令模式的接口只有一个方法,有1个或更多的国家模式的接口方法。此外,对状态模式实现类的方法,一般的返回值,或实例变量的值的变化。换句话说,状态模式一般对象的状态有关。实现一个类具有不同的功能的方法,包括界面的方法。国家模式,以及命令模式,也可以用来消除如果…其他等条件选择语句。
2。主要目的是,作为一个实例变量,一个对象的引用,使用命令模式的主要方式是参数回调模式。命令接口是通过作为该方法的一个参数。然后,接口在方法体回调。使用状态模式的主要途径是通过设置属性的方法或构造函数传递状态的接口的具体实现类的实例,因此,它是可以比较的命令模式和状态模式的异同。
无论是国家模式和命令模式是很常见的,粒度小的模式,是很多大格局的一部分。基本上,状态模式是命令模式非常相似。只要开发商有单身,很多情况下,一个清醒的认识,可以不将它们分为两模型。