[php]php设计模式 State (状态模式)
2011-06-21 00:08
801 查看
<?php
/**
* 状态模式
*
* 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它所属的类
*
*/
interface State
{
publicfunction handle($state);
publicfunction display();
}
class Context
{
private$_state=null;
publicfunction __construct($state)
{
$this->setState($state);
}
publicfunction setState($state)
{
$this->_state =$state;
}
publicfunction request()
{
$this->_state->display();
$this->_state->handle($this);
}
}
class StateA implements State
{
publicfunction handle($context)
{
$context->setState(new StateB());
}
publicfunction display()
{
echo"state A<br/>";
}
}
class StateB implements State
{
publicfunction handle($context)
{
$context->setState(new StateC());
}
publicfunction display()
{
echo"state B<br/>";
}
}
class StateC implements State
{
publicfunction handle($context)
{
$context->setState(new StateA());
}
publicfunction display()
{
echo"state C<br/>";
}
}
// 实例化一下
$objContext=new Context(new StateB());
$objContext->request();
$objContext->request();
$objContext->request();
$objContext->request();
$objContext->request();
/**
* 状态模式
*
* 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它所属的类
*
*/
interface State
{
publicfunction handle($state);
publicfunction display();
}
class Context
{
private$_state=null;
publicfunction __construct($state)
{
$this->setState($state);
}
publicfunction setState($state)
{
$this->_state =$state;
}
publicfunction request()
{
$this->_state->display();
$this->_state->handle($this);
}
}
class StateA implements State
{
publicfunction handle($context)
{
$context->setState(new StateB());
}
publicfunction display()
{
echo"state A<br/>";
}
}
class StateB implements State
{
publicfunction handle($context)
{
$context->setState(new StateC());
}
publicfunction display()
{
echo"state B<br/>";
}
}
class StateC implements State
{
publicfunction handle($context)
{
$context->setState(new StateA());
}
publicfunction display()
{
echo"state C<br/>";
}
}
// 实例化一下
$objContext=new Context(new StateB());
$objContext->request();
$objContext->request();
$objContext->request();
$objContext->request();
$objContext->request();
相关文章推荐
- php设计模式 State (状态模式)
- PHP设计模式:状态State模式
- PHP设计模式:行为型之状态(State)
- JAVA设计模式——状态模式(State)
- 设计模式之 State 状态模式
- Java 设计模式 之 状态模式(State)
- 设计模式(17)-状态模式(State)
- 设计模式--状态模式(State)
- 设计模式 ( 十七) 状态模式State(对象行为型)
- 程序设计模式 —— State 状态模式
- java 设计模式之State(状态模式)
- State Design Pattern 状态设计模式2
- 设计模式 ( 十七) 状态模式State(对象行为型)
- 设计模式之状态模式(State)
- 设计模式之十二:状态模式(State)
- C++设计模式-State状态模式
- 设计模式--状态模式State(行为型)
- 设计技巧26:状态模式 State 用类来表示一个状态
- 初识PHP设计模式--状态模式