Python设计模式 专题
您的位置:python > Python设计模式专题 > 责任链设计模式
责任链设计模式
作者:--    发布时间:2019-11-20

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

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

如何实现责任链模式?

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

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 '<html>'
      print ' <head>'
      print ' <title>%s</title>' % title
      print ' </head>'
      print ' <body>'
      for line in text:
         print ' <p>%s
' % line
      print ' </body>'
      print '</html>'

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)

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

解释说明

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


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册