在视图之间共享控制器
Sharing controller between views
我有一个包含 2 个视图的框架。我想对它们都使用一个公共控制器,但不实例化 2 个控制器。我如何实现这一目标?单例?将控制器作为参数发送?
请注意,控制器将保存临时数据(坏主意?),这些数据将根据命令发送出去。这就是为什么我只想要一个控制器对象。不要羞于提出其他设计想法。
第一次观看
Class ViewAlpha
def __init_(self, parent):
self.controller = Controller()
def on_click(self, event):
self.controller.do_this(event.data)
第二个视图
Class ViewBeta
def __init_(self, parent):
self.controller = Controller()
def on_click(self, event):
self.controller.do_this(event.data)
控制器
Class Controller
def __init_(self):
self.client = Client()
def do_this(self, data):
self.client.store(data)
将事物作为参数传递,就像在您的代码中一样,是解决此类问题的最常见方法。如果你只需要 do_this
-方法,你甚至可以只传递方法:
beta = ViewBeta(controller.do_this)
我有一个包含 2 个视图的框架。我想对它们都使用一个公共控制器,但不实例化 2 个控制器。我如何实现这一目标?单例?将控制器作为参数发送?
请注意,控制器将保存临时数据(坏主意?),这些数据将根据命令发送出去。这就是为什么我只想要一个控制器对象。不要羞于提出其他设计想法。
第一次观看
Class ViewAlpha
def __init_(self, parent):
self.controller = Controller()
def on_click(self, event):
self.controller.do_this(event.data)
第二个视图
Class ViewBeta
def __init_(self, parent):
self.controller = Controller()
def on_click(self, event):
self.controller.do_this(event.data)
控制器
Class Controller
def __init_(self):
self.client = Client()
def do_this(self, data):
self.client.store(data)
将事物作为参数传递,就像在您的代码中一样,是解决此类问题的最常见方法。如果你只需要 do_this
-方法,你甚至可以只传递方法:
beta = ViewBeta(controller.do_this)