GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — python-patterns/chain.py at master · wepng/python-patterns Expand file tree/ Copy pathchain.pyMore file actions 66 lines (51 loc) · 1.9 KB / Copy pathchain.pyFile metadata and controls66 lines (51 loc) · 1.9 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 #!/usr/bin/env python # -*- coding: utf-8 -*- """http://www.testingperspective.com/wiki/doku.php/collaboration/chetan/designpatternsinpython/chain-of-responsibilitypattern""" class Handler: def __init__(self,successor): self._successor = successor; def handle(self,request): i = self._handle(request) if not i: self._successor.handle(request) def _handle(self, request): raise NotImplementedError('Must provide implementation in subclass.') class ConcreteHandler1(Handler): def _handle(self, request): if 0 < request <= 10: print('request {} handled in handler 1'.format(request)) return True class ConcreteHandler2(Handler): def _handle(self, request): if 10 < request <= 20: print('request {} handled in handler 2'.format(request)) return True class ConcreteHandler3(Handler): def _handle(self, request): if 20 < request <= 30: print('request {} handled in handler 3'.format(request)) return True class DefaultHandler(Handler): def _handle(self, request): print('end of chain, no handler for {}'.format(request)) return True class Client: def __init__(self): self.handler = ConcreteHandler1(ConcreteHandler3(ConcreteHandler2(DefaultHandler(None)))) def delegate(self, requests): for request in requests: self.handler.handle(request) if __name__ == "__main__": client = Client() requests = [2, 5, 14, 22, 18, 3, 35, 27, 20] client.delegate(requests) ### OUTPUT ### # request 2 handled in handler 1 # request 5 handled in handler 1 # request 14 handled in handler 2 # request 22 handled in handler 3 # request 18 handled in handler 2 # request 3 handled in handler 1 # end of chain, no handler for 35 # request 27 handled in handler 3 # request 20 handled in handler 2 |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |