Python uses the example of the responsibility chain mode and iterator mode in the design mode, and the python Design Mode
Responsibility Chain Model
Responsible Chain Mode: connects the objects that can process the request into a chain and transmits the request along this chain until an object processes the request, avoid coupling between request senders and receivers.
# Encoding = UTF-8 ## by panda # responsibility connection mode def printInfo (info): print unicode (info, 'utf-8 '). encode ('gbk') # Abstract responsibility class Manager (): successor = None name = ''def _ init _ (self, name): self. name = name def SetSuccessor (self, successor): self. successor = successor def HandleRequest (self, request): pass # responsibility class: Manager class CommonManager (Manager): def HandleRequest (self, request): if request. requestType = 'offset' D request. number <= 2: printInfo ('% s: % s quantity % d approved' % (self. name, request. requestContent, request. number) else: if self. successor! = None: self. successor. handleRequest (request) # specific responsibilities: director class Majordomo (Manager): def HandleRequest (self, request): if request. requestType = 'offset' and request. number <= 5: printInfo ('% s: % s quantity % d approved' % (self. name, request. requestContent, request. number) else: if self. successor! = None: self. successor. handleRequest (request) # specific responsibilities: general Manager class GeneralManager (Manager): def HandleRequest (self, request): if request. requestType = 'Leave of absence ': printInfo (' % s: % s quantity % d approved '% (self. name, request. requestContent, request. number) elif request. requestType = 'salary raise 'and request. number <= 500: printInfo ('% s: % s quantity % d approved' % (self. name, request. requestContent, request. number) elif request. requestType = 'salary raise 'and request. number> 500: printInfo ('% s: % s quantity % d.' % (self. name, request. requestContent, request. number) class Request (): RequestType = ''RequestContent ='' Number = 0 def clientUI (): jinLi = CommonManager ('kingli ') zongJian = Majordomo ('zongjian ') zhongJingLi = GeneralManager ('zhong jinlil') jinLi. setSuccessor (zongJian) zongJian. setSuccessor (zhongJingLi) request = Request () request. requestType = 'offset' request. requestContent = 'Food offset' request. number = 1 jinLi. handleRequest (request) request. requestType = 'offset' request. requestContent = 'Food offset' request. number = 5 jinLi. handleRequest (request) request. requestType = 'salary raise 'request. requestContent = 'Food requires a raise 'request. number = 500 jinLi. handleRequest (request) request. requestType = 'salary raise 'request. requestContent = 'Food requires a raise 'request. number = 1000 jinLi. handleRequest (request) return if _ name _ = '_ main _': clientUI ();
Class diagram:
Iterator Mode
Iterator mode: provides a method to access each element of an aggregate object sequentially without exposing the internal representation of the object.
Python provides built-in support for this mode, so you do not need to write it yourself,
# Encoding = UTF-8 ## by panda # Iterator mode def printInfo (info): print unicode (info, 'utf-8 '). encode ('gbk') # Iterator abstract class Iterator: def First (self): pass def Next (self): pass def IsDone (self): pass def CurrentItem (self ): pass # Set abstract class Aggregate: def CreateIterator (self): pass # specific Iterator class: class ConcreteIterator (Iterator ): aggregate = None current = 0 def _ init _ (self, aggregate): self. aggregate = Aggregate self. current = 0 def First (self): return self. aggregate [0] def Next (self): ret = None self. current + = 1 if (self. current <len (self. aggregate): ret = self. aggregate [self. current] return ret def IsDone (self): if (self. current <len (self. aggregate): return False else: return True def CurrentItem (self): ret = None if (self. current <len (self. aggregate): ret = self. aggregate [self. current] r Eturn ret # specific collection class ConcreteAggregate (Aggregate): items = None def _ init _ (self): self. items = [] def clientUI (): a = ConcreteAggregate (). items. append ('Big Bird'). items. append ('food'). items. append ('luggage '). items. append ('foreigner '). items. append ('bus internal employee '). items. append ('thief ') printInfo (' --------- iterator mode ------------- ') I = ConcreteIterator (. items) item = I. first () while (False = I. isDone (): printInfo ("% S, please buy a ticket! "% I. currentItem (); I. next () printInfo ('\ n --------- internal python iteration -------------') for item in. items: printInfo ("% s buy a ticket! "% Item); return if _ name _ = '_ main _': clientUI ();
Class diagram:
Articles you may be interested in:
- Measure the test taker's knowledge about the observer mode and Strategy Mode in Python Design Mode Programming.
- Simple program example of interpreter mode in Python Design Mode Programming
- An example of how to use the design pattern in Python
- Analysis of the key points of the Decorator pattern in Python
- Instance parsing Python Design Mode Programming-Application of Bridge Mode
- Examples of Adapter mode in Python Design Mode Programming
- Application Example of prototype in design mode in Python Program
- In-depth analysis of the use of builder mode in Python Design Mode Programming
- An example of how to use the abstract factory mode in Python Design Mode Programming
- The example explains how to use the factory method mode of programming in Python design mode.
- Detailed description of the use of the factory method mode in the design mode in the Python Program
- Use the simple factory mode for Python Design Mode Programming