php设计模式 责任链,责任链设计模式

责任链模式用于实现软件中的松散耦合,其中来自客户端的指定请求通过包含在其中的对象链传递。 它有助于构建一系列对象。 请求从一端进入并从一个对象移动到另一个对象。

该模式允许对象发送命令而不知道哪个对象将处理该请求。

如何实现责任链模式?

现在我们将看到如何实施责任链模式。参考以下实现代码 -

class ReportFormat(object):

PDF = 0

TEXT = 1

class Report(object):

def __init__(self, format_):

self.title = 'Monthly report'

self.text = ['Things are going', 'really, really well.']

self.format_ = format_

class Handler(object):

def __init__(self):

self.nextHandler = None

def handle(self, request):

self.nextHandler.handle(request)

class PDFHandler(Handler):

def handle(self, request):

if request.format_ == ReportFormat.PDF:

self.output_report(request.title, request.text)

else:

super(PDFHandler, self).handle(request)

def output_report(self, title, text):

print ''

print '

'

print '

%s' % title

print ' '

print '

'

for line in text:

print '

%s

' % line

print ' '

print ''

class TextHandler(Handler):

def handle(self, request):

if request.format_ == ReportFormat.TEXT:

self.output_report(request.title, request.text)

else:

super(TextHandler, self).handle(request)

def output_report(self, title, text):

print 5*'*' + title + 5*'*'

for line in text:

print line

class ErrorHandler(Handler):

def handle(self, request):

print "Invalid request"

if __name__ == '__main__':

report = Report(ReportFormat.TEXT)

pdf_handler = PDFHandler()

text_handler = TextHandler()

pdf_handler.nextHandler = text_handler

text_handler.nextHandler = ErrorHandler()

pdf_handler.handle(report)

执行上述程序生成以下输出 -

ee4e67f270e4e5b8cb76848ace243135.png

解释说明

上面的代码是创建一个报告的月任务,通过每个函数发送命令。 它需要两个处理程序 - 用于PDF和文本。 当所需的对象执行每个功能,它将打印输出。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值