php设计模式之命令链模式

命令链模式:

   命令链模式以松散耦合主题为基础,发送消息、命令和请求,或通过一组处理程序发送任意内容。每个处理程序都会自行判断自己能否处理请求。如果可以,该请求被处理,进程停止。您可以为系统添加或移除处理程序,而不影响其他处理程序。



1.interface Validator  

2.{  

3.    /**  

4.     * The method could have any parameters.  

5.     * @param mixed  

6.     * @return boolean  

7.     */ 

8.    public function isValid($value);  

9.}  

10. 

11./**  

12. * ConcreteCommand.  

13. */ 

14.class MoreThanZeroValidator implements Validator  

15.{  

16.    public function isValid($value)  

17.     

18.        return $value > 0;  

19.     

20.}  

21. 

22./**  

23. * ConcreteCommand.  

24. */ 

25.class EvenValidator implements Validator  

26.{  

27.    public function isValid($value)  

28.     

29.        return $value % 2 == 0;  

30.     

31.}  

32. 

33./**  

34. * The Invoker. An implementation could store more than one  

35. * Validator if needed.  

36. */ 

37.class ArrayProcessor  

38.{  

39.    protected $_rule;  

40. 

41.    public function __construct (Validator $rule)  

42.     

43.        $this->_rule = $rule;  

44.     

45. 

46.    public function process(array $numbers)  

47.     

48.        foreach ($numbers as $n)  

49.            if ($this->_rule->IsValid($n))  

50.                echo $n, "\n";  

51.             

52.         

53.     

54.}  

55. 

56.// Client code  

57.$processor = new ArrayProcessor(new EvenValidator());  

58.$processor->process(array(1, 20, 18, 5, 0, 31, 42)); 

 

 

 

 

 


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。