以下哪一项被认为是更好的设计?为什么?我有两个类,一个用于gui组件,另一个用于它的事件.
请记住,eventClass将被实现很多次(有时从oracle数据库获取数据,有时甚至是mysql数据库)
class MainWindow:
def __init__(self):
self.myEvents = eventClass() # the class that has all the events
self.button = button # consider it a button from any gui library
self.menu = menu # menu box
def bottonEvent(self):
data = self.myEvents.buttonEvent()
self.menu.populate(data)
class eventClass:
def __init__(self):
pass
def getData(self):
return data # return data to puplate in the list
Run Code Online (Sandbox Code Playgroud)
要么
class MainWindow:
def __init__(self):
self.myEvents = eventClass(self) # the class that has all the events
self.button = button # consider it a button from any gui library
self.menu = menu # menu box
def bottonEvent(self):
self.myEvents.ButtonEvent()
class eventClass:
def __init__(self,window):
pass
def ButtonEvent(self):
window.menu.populateData()
Run Code Online (Sandbox Code Playgroud)
如果有任何不清楚的地方请通知我,
请
提前帮助,谢谢
第一种选择是更好的"解耦":事件类需要并且对窗口对象或其菜单属性一无所知 - 这是一种极好的方法,使事件类特别容易单独测试,无需任何开销.如果需要存在许多相同接口的实现,这是特别好的,正如您所提到的那样.
第二种选择引入了相互依赖 - 如果没有窗口对象,事件对象就无法工作,窗口对象会构建一个事件对象.这可能是一个可接受的复杂情况,在更多深奥的情况下,它会给你买东西,但对于这个特定的用途,它听起来更像是一个任意的额外难度,没有任何真正的加分.
所以,我会推荐第一个表格.