哪些python实现更好
以下哪一项被认为是更好的设计?为什么?。 我有两个类,一个用于gui组件,另一个用于它的事件。哪些python实现更好,python,oop,Python,Oop,以下哪一项被认为是更好的设计?为什么?。 我有两个类,一个用于gui组件,另一个用于它的事件。 请记住,eventClass将被多次实现(有时是从oracle数据库获取数据,有时是从mysql数据库获取数据) 或 如果有任何不清楚的地方,请通知我 请帮忙, 提前感谢第一个选择是更好的“解耦”:事件类需要并且完全不了解窗口对象或其菜单属性——这是一种非常好的方法,可以使事件类特别容易地单独进行单元测试,而无需任何开销。如果需要存在同一接口的多个实现,这尤其好,正如您在案例中提到的那样 第二种选择
请记住,eventClass将被多次实现(有时是从oracle数据库获取数据,有时是从mysql数据库获取数据) 或 如果有任何不清楚的地方,请通知我
请帮忙,
提前感谢
第一个选择是更好的“解耦”:事件类需要并且完全不了解窗口对象或其菜单属性——这是一种非常好的方法,可以使事件类特别容易地单独进行单元测试,而无需任何开销。如果需要存在同一接口的多个实现,这尤其好,正如您在案例中提到的那样 第二种选择引入了相互依赖性——没有窗口对象,事件对象无法工作,窗口对象构建事件对象。这可能是一个可以接受的复杂情况,在更深奥的情况下,它买你的东西,但对于这个具体的用途,它听起来更像是一个武断的额外困难,没有任何真正的好处
因此,我推荐第一种形式。这是一个很好的答案,但我要说的是,如果不看到你的整个过程,就不可能告诉你哪个“更好”design@Falmarri当然,这是一个很好的观点:如果OP隐藏了其他地方发生的一些可怕的并发症,但与这两个类密切相关,那么,总体设计将不符合我的“此特定用途”资格(因为用途将非常不同;-)。我的A是基于应用程序的壁橱中没有隐藏任何大秘密或骨架;-)。
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
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()