Python设计模式 专题
您的位置:python > Python设计模式专题 > 抽象工厂设计模式
抽象工厂设计模式
作者:--    发布时间:2019-11-20

抽象工厂模式也被称为工厂的工厂。 此设计模式属于创建设计模式类别。 它提供了创建对象的最佳方法之一。

它包含一个接口,负责创建与工厂相关的对象。

如何实现抽象工厂模式?

参考以下程序,演示如何实现抽象工厂模式。

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())

执行上面示例代码,得到以下结果 -

说明
在上面的程序中,抽象工厂为每个窗口创建对象。 它调用每个方法,按预期执行输出。


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册