Python设计模式

Python抽象工厂模式

Python抽象工厂模式详细操作教程
抽象工厂模式也称为工厂工厂。该设计模式属于创新设计模式类别。它提供了创建对象的最佳方法之一。
它包含一个接口,负责创建与Factory相关的对象。

如何实现抽象工厂模式?

以下程序有助于实现抽象工厂模式。
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# 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()))

输出

上面的程序生成以下输出-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-22
Gtk:ToolboxWindow
Gtk:LayersWindow
Gtk:MainWindow

说明

在上面的程序中,抽象工厂为每个窗口创建对象。它调用每个方法,该方法将按预期执行输出。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4