以下哪一项被认为是更好的设计?为什么? 我有两个班,一个是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
OR
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()
如果有任何不清楚的地方,请通知我
请帮忙,
提前谢谢你
答案 0 :(得分:5)
第一个选择是更好的“解耦”:事件类需要并且对窗口对象或其菜单属性一无所知 - 这是一种极好的方法,使事件类特别容易单独测试,而不会产生任何开销。如果需要存在相同接口的许多实现,这是特别好的,正如您所提到的那样。
第二种选择引入了相互依赖 - 如果没有窗口对象,事件对象就无法工作,窗口对象会构建一个事件对象。这可能是一个可接受的复杂情况,在更多深奥的情况下,它会购买你的东西,但对于这个特定的用途,它听起来更像是一个任意的额外难度,没有任何真正的加分。
所以,我会推荐第一个表格。