因此,在 Java 等语言中,在某些 MVC 模式中,使用接口(interface)来减少类之间的耦合是很常见的。
在Python中使用函数指针来实现同样的事情合法吗?
假设我们的 MainFrame 仅需要 Controller 的一项功能,您会更改下面代码中的某些内容吗?是否存在一些潜在问题?
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 中,使用接口(interface)来完成类似的事情的模式实际上是由于其没有函数对象的历史限制的结果。 Python 没有这个缺陷,因此您的解决方案将会起作用。
关于python - python中可以使用函数指针来减少类之间的依赖关系吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35002527/