Python 抽象工厂模式
抽象工厂模式也称为工厂工厂。该设计模式属于创新设计模式类别。它提供了创建对象的最佳方法之一。
它包含一个接口,负责创建与Factory相关的对象。
如何实现抽象工厂模式?
以下程序有助于实现抽象工厂模式。
# Filename : example.py # Date : 2020-08-22 class Window: __toolkit = "" __purpose = "" def __init__(self, toolkit, purpose): self.__toolkit = toolkit self.__purpose = purpose def getToolkit(self): return self.__toolkit def getType(self): return self.__purpose class GtkToolboxWindow(Window): def __init__(self): Window.__init__(self, "Gtk", "ToolboxWindow") class GtkLayersWindow(Window): def __init__(self): Window.__init__(self, "Gtk", "LayersWindow") class GtkMainWindow(Window): def __init__(self): Window.__init__(self, "Gtk", "MainWindow") class QtToolboxWindow(Window): def __init__(self): Window.__init__(self, "Qt", "ToolboxWindow") class QtLayersWindow(Window): def __init__(self): Window.__init__(self, "Qt", "LayersWindow") class QtMainWindow(Window): def __init__(self): Window.__init__(self, "Qt", "MainWindow") # Abstract factory class class UIFactory: def getToolboxWindow(self): pass def getLayersWindow(self): pass def getMainWindow(self): pass class GtkUIFactory(UIFactory): def getToolboxWindow(self): return GtkToolboxWindow() def getLayersWindow(self): return GtkLayersWindow() def getMainWindow(self): return GtkMainWindow() class QtUIFactory(UIFactory): def getToolboxWindow(self): return QtToolboxWindow() def getLayersWindow(self): return QtLayersWindow() def getMainWindow(self): return QtMainWindow() if __name__ == "__main__": gnome = True kde = not gnome if gnome: ui = GtkUIFactory() elif kde: ui = QtUIFactory() toolbox = ui.getToolboxWindow() layers = ui.getLayersWindow() main = ui.getMainWindow() print("%s:%s" % (toolbox.getToolkit(), toolbox.getType())) print("%s:%s" % (layers.getToolkit(), layers.getType())) print("%s:%s" % (main.getToolkit(), main.getType()))
输出
上面的程序生成以下输出:
Gtk:ToolboxWindow Gtk:LayersWindow Gtk:MainWindow
说明
在上面的程序中,抽象工厂为每个窗口创建对象。它调用每个方法,该方法将按预期执行输出。
迭代器设计模式属于行为设计模式类别。开发人员几乎在每种编程语言中都遇到了迭代器模式。这种模式的使用方式有助于在不了解底层设计的情况下按顺序访问集合(类)的元素。 如何实现迭代器模式?我们现在将了解如何实现 ...