文章摘要
本文介绍了基于面向对象编程的PHP抽象处理器类设计。文章定义了抽象处理器类`Handler`,该类具有`setSuccessor`方法用于设置后驱处理器,并抽象定义了`handleRequest`方法用于处理请求。接着,文章定义了两个具体处理器类`ConcreteHandlerA`和`ConcreteHandlerB`,它们分别在处理特定请求后调用后驱处理器。最后,客户端代码展示了如何通过实例化处理器并配置后驱,实现处理不同请求的逻辑。文章重点突出了处理器类的继承与调用机制。
<?php
// 抽象处理器类
abstract class Handler
{
protected $successor;
public function setSuccessor(Handler $successor)
{
$this->successor=$successor;
}
abstract public function handleRequest($request);
}
// 具体处理器类A
class ConcreteHandlerA extends Handler
{
public function handleRequest($request)
{
if ($request==”A”) {
echo “ConcreteHandlerA handles the request.\n”;
} else if ($this->successor !=null) {
$this->successor->handleRequest($request);
}
}
}
// 具体处理器类B
class ConcreteHandlerB extends Handler
{
public function handleRequest($request)
{
if ($request==”B”) {
echo “ConcreteHandlerB handles the request.\n”;
} else if ($this->successor !=null) {
$this->successor->handleRequest($request);
}
}
}
// 客户端代码
$handlerA=new ConcreteHandlerA();
$handlerB=new ConcreteHandlerB();
$handlerA->setSuccessor($handlerB);
$handlerA->handleRequest(“A”);
$handlerA->handleRequest(“B”);
// 抽象处理器类
abstract class Handler
{
protected $successor;
public function setSuccessor(Handler $successor)
{
$this->successor=$successor;
}
abstract public function handleRequest($request);
}
// 具体处理器类A
class ConcreteHandlerA extends Handler
{
public function handleRequest($request)
{
if ($request==”A”) {
echo “ConcreteHandlerA handles the request.\n”;
} else if ($this->successor !=null) {
$this->successor->handleRequest($request);
}
}
}
// 具体处理器类B
class ConcreteHandlerB extends Handler
{
public function handleRequest($request)
{
if ($request==”B”) {
echo “ConcreteHandlerB handles the request.\n”;
} else if ($this->successor !=null) {
$this->successor->handleRequest($request);
}
}
}
// 客户端代码
$handlerA=new ConcreteHandlerA();
$handlerB=new ConcreteHandlerB();
$handlerA->setSuccessor($handlerB);
$handlerA->handleRequest(“A”);
$handlerA->handleRequest(“B”);
© 版权声明
文章版权归作者所有,未经允许请勿转载。