您的位置:首页 > 编程语言 > PHP开发

php设计模式 Chain Of Responsibility (职责链模式)

2011-11-12 09:12 701 查看
简介:这是php设计模式 Chain Of Responsibility (职责链模式)的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。

class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=339157' scrolling='no'>
1 <?php
2 /**
3  * 职责链模式
4  *
5  * 为解除请求的发送者和接收者之间的耦合,而使用多个对象都用机会处理这个请求,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它
6  *
7  */
8 abstract class Handler
9 {
10     protected $_handler = null;
11
12     public function setSuccessor($handler)
13     {
14         $this->_handler = $handler;
15     }
16
17     abstract function handleRequest($request);
18 }
19
20 class ConcreteHandlerZero extends Handler
21 {
22     public function handleRequest($request)
23     {
24         if($request == 0)
25         {
26             echo "0<br/>";
27         } else {
28             $this->_handler->handleRequest($request);
29         }
30     }
31 }
32
33 class ConcreteHandlerOdd extends Handler
34 {
35     public function handleRequest($request)
36     {
37         if($request % 2)
38         {
39             echo $request." is odd<br/>";
40         } else {
41             $this->_handler->handleRequest($request);
42         }
43     }
44 }
45
46 class ConcreteHandlerEven extends Handler
47 {
48     public function handleRequest($request)
49     {
50         if(!($request % 2))
51         {
52             echo $request." is even<br/>";
53         } else {
54             $this->_handler->handleRequest($request);
55         }
56     }
57 }
58
59
60 // 实例一下
61 $objZeroHander = new ConcreteHandlerZero();
62 $objEvenHander = new ConcreteHandlerEven();
63 $objOddHander = new ConcreteHandlerOdd();
64 $objZeroHander->setSuccessor($objEvenHander);
65 $objEvenHander->setSuccessor($objOddHander);
66
67 foreach(array(2,3,4,5,0) as $row)
68 {
69     $objZeroHander->handleRequest($row);
70 }


爱J2EE关注Java迈克尔杰克逊视频站JSON在线工具
http://biancheng.dnbcw.info/php/339157.html pageNo:8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: