状态模式

Posted 落叶成冰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了状态模式相关的知识,希望对你有一定的参考价值。

<?php
// 状态模式

class State

	// 有效状态常量值
	const st_dev = 0;
	const st_deploy = 1;
	const st_debug = 2;
	private $st = -1; //初始状态-1
	
	public function __construct($st=null) 
		if(!is_null($st)) 
			$this->st = $st;
		
	
	
	// state setter
	public function setStatus($st) 
		$this->st = $st;
	
	
	// state getter
	public function getStatus() 
		return $this->st;
	
	
	// ---------------------------------------------
	// 不同的状态值对应不同的动作
	// ---------------------------------------------
	
	// dev state
	public function actDev() 
		echo 'state = <b>dev</b><br/>';
	
	
	// deploy state
	public function actDeploy() 
		echo 'state = <b>deploy</b><br/>';
	
	
	// debug state
	public function actDebug() 
		echo 'state = <b>debug</b><br/>';
	


class Context

	private $state;
	
	public function __construct(State $st) 
		$this->state = $st;
	
	
	public function setState(State $st) 
		$this->state = $st;
	
	
	public function getState() 
		return $this->state;
	
	
	// 根据不同的状态采取不同的动作
	public function doAct() 
		$st = $this->state->getStatus(); // 获取当前状态值
		switch($st) 
			case State::st_dev:
				$this->state->actDev();
				break;
			case State::st_deploy:
				$this->state->actDeploy();
				break;
			case State::st_debug;
				$this->state->actDebug();
				break;
			default:
				echo 'state error!<br/>';
		
	


// test code
$st = new State(State::st_dev);
$ctx = new Context($st);
$ctx->doAct();

// change
$st->setStatus(State::st_deploy);
$ctx->doAct();


以上是关于状态模式的主要内容,如果未能解决你的问题,请参考以下文章

PHP计算变量值出现的次数

Myeclipse调试模式下自动提示变量值设置

python基础之数据类型与变量

数据类型

012 变量

java 在调试的时候如何查看类中的静态变量值