欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
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
说明
在上面的程序中,抽象工厂为每个窗口创建对象。它调用每个方法,该方法将按预期执行输出。
下一章:Python 迭代器模式
迭代器设计模式属于行为设计模式类别。开发人员几乎在每种编程语言中都遇到了迭代器模式。这种模式的使用方式有助于在不了解底层设计的情况下按顺序访问集合(类)的元素。 如何实现迭代器模式?我们现在将了解如何实现 ...
AI 中文社