状态模式
状态模式:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。
在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从而使得系统的行为也随之发生变化。
类结构图:
php代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | <?php class 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(); ?> |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步