哪个python实现更好

时间:2010-09-12 23:20:26

标签: python oop

以下哪一项被认为是更好的设计?为什么? 我有两个班,一个是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()

如果有任何不清楚的地方,请通知我 请帮忙,
提前谢谢你

1 个答案:

答案 0 :(得分:5)

第一个选择是更好的“解耦”:事件类需要并且对窗口对象或其菜单属性一无所知 - 这是一种极好的方法,使事件类特别容易单独测试,而不会产生任何开销。如果需要存在相同接口的许多实现,这是特别好的,正如您所提到的那样。

第二种选择引入了相互依赖 - 如果没有窗口对象,事件对象就无法工作,窗口对象会构建一个事件对象。这可能是一个可接受的复杂情况,在更多深奥的情况下,它会购买你的东西,但对于这个特定的用途,它听起来更像是一个任意的额外难度,没有任何真正的加分。

所以,我会推荐第一个表格。