因此,在Java等语言中,在一些MVC模式中,使用接口减少类之间的耦合是很常见的。你知道吗
在python中,使用函数指针来实现相同的目标是否合法?你知道吗
假设我们的主机只需要控制器的一个功能,您是否可以更改下面代码中的某些内容,是否存在一些潜在的问题?你知道吗
class MainFrame(object):
def __init__(self):
self._listeners = []
def fireEvent(self):
for l in self._listeners:
l()
def addListener(self, funcPtr):
self._listeners.append(funcPtr)
class Controller(object):
def __init__(self):
pass
def eventRised(self):
print "controller recived event"
def main():
m = MainFrame()
c = Controller()
m.addListener(c.eventRised)
m.fireEvent()
if __name__ == '__main__':
main()
程序输出为:
controller recived event
这是一种完全合法的代码编写方式。这种类型的方法称为回调。请注意,在Java中,使用接口进行类似操作的模式实际上是其历史局限性的结果,即没有函数对象。Python没有这个缺陷,所以您的解决方案可以工作。你知道吗
相关问题 更多 >
编程相关推荐