Aha!设计模式(75)-职责链模式(3)

示例代码

 

本文提供一种职责链模式的Python实现。首先是对请求建模。

 

Aha!设计模式(75)-职责链模式(3)

 

代码中构建了三个毫不相关的Request类,其中Request1和Request2有功能,而DummyRequest没有功能。接下来是Handler基类:

 

Aha!设计模式(75)-职责链模式(3)

 

Handler类通过初始化方法指定successor,通过handler_request处理请求。由于Handler是基类,所以只是简单地将请求传送给succesor。如果没有指定successor,则输出文字表示传播链结束。

 

Aha!设计模式(75)-职责链模式(3)

 

接下来首先是Request1Handler和Request2Handler类,分别用来处理Request1、Request2。另外一个DummyHandler,只是用来对外宣称自己什么也不做。接下来是主函数:

 

Aha!设计模式(75)-职责链模式(3)

 

代码中首先构建了一个传播链:DummyHandler->Request1Handler->DummyHandler->Request2Handler。然后分别发送了三个请求:DummyRequest、Request1和Request2。输出结果如下:

 

Aha!设计模式(75)-职责链模式(3)

DummyRequest通过了所有Handler而没有被处理;Request1被Request1Handler处理后传播中断;Request2被Request2Handler处理后传播结束。

 

注意事项

 

由于Python不检查变量的类型,所以我们不需要为Request定义基类。

 

觉得本文有帮助?请分享给更多人。

阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】

Aha!设计模式(75)-职责链模式(3)