责任链模式:将能处理请求的对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理请求为止,避免请求的发送者和接收者之间的耦合关系。
#encoding=utf-8
#
#by panda
#职责连模式
def printInfo(info):
print unicode(info, 'utf-8').encode('gbk')
#抽象职责类
class Manager():
successor = None
name = ''
def __init__(self, name):
self.name = name
def SetSuccessor(self, successor):
self.successor = successor
def HandleRequest(self, request):
pass
#具体职责类:经理
class CommonManager(Manager):
def HandleRequest(self, request):
if request.RequestType == '请假' and request.Number 500:
printInfo('%s:%s 数量%d 再说吧' % (self.name, request.RequestContent, request.Number))
class Request():
RequestType = ''
RequestContent = ''
Number = 0
def clientUI():
jinLi = CommonManager('金力')
zongJian = Majordomo('宗健')
zhongJingLi = GeneralManager('钟金利')
jinLi.SetSuccessor(zongJian)
zongJian.SetSuccessor(zhongJingLi)
request = Request()
request.RequestType = '请假'
request.RequestContent = '小菜请假'
request.Number = 1
jinLi.HandleRequest(request)
request.RequestType = '请假'
request.RequestContent = '小菜请假'
request.Number = 5
jinLi.HandleRequest(request)
request.RequestType = '加薪'
request.RequestContent = '小菜要求加薪'
request.Number = 500
jinLi.HandleRequest(request)
request.RequestType = '加薪'
request.RequestContent = '小菜要求加薪'
request.Number = 1000
jinLi.HandleRequest(request)
return
if __name__ == '__main__':
clientUI();
类图:
迭代器模式
迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。
python内置支持这种模式,所以一般来说,不用自己写,
#encoding=utf-8
#
#by panda
#迭代器(Iterator)模式
def printInfo(info):
print unicode(info, 'utf-8').encode('gbk')
#迭代器抽象类
class Iterator:
def First(self):
pass
def Next(self):
pass
def IsDone(self):
pass
def CurrentItem(self):
pass
#集合抽象类
class Aggregate:
def CreateIterator(self):
pass
#具体迭代器类:
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
类图:
查看更多关于Python使用设计模式中的责任链模式与迭代器模式的示例的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did89551