在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1 <?php
2 /** 3 * 状态模式 4 * 5 * 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它所属的类 6 * 7 */ 8 interface State 9 { 10 publicfunction handle($state); 11 publicfunction display(); 12 } 13 14 class Context 15 { 16 private$_state=null; 17 18 publicfunction __construct($state) 19 { 20 $this->setState($state); 21 } 22 23 publicfunction setState($state) 24 { 25 $this->_state =$state; 26 } 27 28 publicfunction request() 29 { 30 $this->_state->display(); 31 $this->_state->handle($this); 32 } 33 } 34 35 class StateA implements State 36 { 37 publicfunction handle($context) 38 { 39 $context->setState(new StateB()); 40 } 41 42 publicfunction display() 43 { 44 echo"state A<br/>"; 45 } 46 } 47 48 class StateB implements State 49 { 50 publicfunction handle($context) 51 { 52 $context->setState(new StateC()); 53 } 54 55 publicfunction display() 56 { 57 echo"state B<br/>"; 58 } 59 } 60 61 class StateC implements State 62 { 63 publicfunction handle($context) 64 { 65 $context->setState(new StateA()); 66 } 67 68 publicfunction display() 69 { 70 echo"state C<br/>"; 71 } 72 } 73 74 // 实例化一下 75 $objContext=new Context(new StateB()); 76 $objContext->request(); 77 $objContext->request(); 78 $objContext->request(); 79 $objContext->request(); 80 $objContext->request(); |
2022-07-08
2022-08-17
2022-11-06
2022-08-15
2022-08-17
请发表评论