首页 > 代码库 > 状态模式
状态模式
状态模式:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。
在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从而使得系统的行为也随之发生变化。
类结构图:
php代码示例:
<?phpclass State{ function WriteProgram(){ }}class Work{ public $hour,$current; function __construct(){ $this -> hour = 9; $this -> current = new ForenoonState(); } function SetState($temp){ $this -> current = $temp; } function WriteProgram(){ $this -> current -> WriteProgram($this); }}class NoonState extends State{ function WriteProgram($w){ print "noon working\n"; if($w -> hour < 13){ print "fun.\n"; }else{ print "need to rest\n"; } }}class ForenoonState extends State{ function WriteProgram($w){ if($w -> hour < 12){ print "morning working\n"; }else{ $w -> SetState(new NoonState()); $w -> WriteProgram(); } }}$mywork = new Work();$mywork -> hour = 9;$mywork -> WriteProgram();$mywork -> hour = 14;$mywork -> WriteProgram();?>
状态模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。