设计模式推荐
Design Pattern recommendation
我正在开发一个应用程序,该应用程序将 运行 在两个不同的办公室中。 UI 需要保持一致,但是 UI 上的一些按钮会根据 运行 应用程序的办公室以及这些按钮背后的功能逻辑而改变。在 Python 中推荐使用哪种设计模式编写以下代码?目的是能够重复使用为两个办公室开发的应用程序的组件,而无需维护重复代码。
用一个非常简单的例子来帮助说明:
在随附的屏幕截图中 - 如果应用程序 运行 在办公室 A 中仅显示“联系我们”及其自己的代码逻辑,但是如果应用程序 运行 在办公室 B 中,显示“联系我们”和“让我们一起工作”,它们各自的代码逻辑不同于 Office A。
谢谢
您可以尝试提取发散行为以分离模块或函数,并根据您的运行时配置导入或调用合适的行为。一种简单的方法是将当前运行时的名称映射到函数名称,例如:
def show_contact_office1():
# display buttons and set up callbacks
def show_contact_office2():
# display some other buttons
contact_sections = {
'office1': show_contact_office1,
'office2': show_contact_office2,
}
def show_page(config):
current_office = config.get_office()
show_contact = contact_sections[current_office]
show_contact()
如果有许多这样的可变组件,您可以将它们包装到一个 class 中,将默认实现作为父级,将特定的覆盖作为子级 classes。然后在您的代码中实例化适当的 class,类似于上面所示。
我正在开发一个应用程序,该应用程序将 运行 在两个不同的办公室中。 UI 需要保持一致,但是 UI 上的一些按钮会根据 运行 应用程序的办公室以及这些按钮背后的功能逻辑而改变。在 Python 中推荐使用哪种设计模式编写以下代码?目的是能够重复使用为两个办公室开发的应用程序的组件,而无需维护重复代码。
用一个非常简单的例子来帮助说明:
在随附的屏幕截图中 - 如果应用程序 运行 在办公室 A 中仅显示“联系我们”及其自己的代码逻辑,但是如果应用程序 运行 在办公室 B 中,显示“联系我们”和“让我们一起工作”,它们各自的代码逻辑不同于 Office A。
谢谢
您可以尝试提取发散行为以分离模块或函数,并根据您的运行时配置导入或调用合适的行为。一种简单的方法是将当前运行时的名称映射到函数名称,例如:
def show_contact_office1():
# display buttons and set up callbacks
def show_contact_office2():
# display some other buttons
contact_sections = {
'office1': show_contact_office1,
'office2': show_contact_office2,
}
def show_page(config):
current_office = config.get_office()
show_contact = contact_sections[current_office]
show_contact()
如果有许多这样的可变组件,您可以将它们包装到一个 class 中,将默认实现作为父级,将特定的覆盖作为子级 classes。然后在您的代码中实例化适当的 class,类似于上面所示。