我实现了这个简短的示例,试图演示一个简单的委托模式。我的问题是。这看起来像是我对授权的理解吗?
class Handler:
def __init__(self, parent = None):
self.parent = parent
def Handle(self, event):
handler = 'Handle_' +event
if hasattr(self, handler):
func = getattr(self, handler)
func()
elif self.parent:
self.parent.Handle(event)
class Geo():
def __init__(self, h):
self.handler = h
def Handle(self, event):
func = getattr(self.handler, 'Handle')
func(event)
class Steve():
def __init__(self, h):
self.handler = h
def Handle(self, event):
func = getattr(self.handler, 'Handle')
func(event)
class Andy():
def Handle(self, event):
print 'Andy is handling %s' %(event)
if __name__ == '__main__':
a = Andy()
s = Steve(a)
g = Geo(s)
g.Handle('lab on fire')
这是基本的概念,是的-将一些传入的请求传递给另一个要处理的对象。
一个Python提示:你不需要说:
就说:
我不确定你在用你的Handler类做什么,你的例子中没有用到它。
在Python中,使用大写名称的方法是非常不寻常的,通常是移植一些使用类似名称的现有API的结果。
相关问题 更多 >
编程相关推荐