在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 抽象工廠設計模式
反模式
隊列
適配器設計模式
享元設計模式
Python設計模式
工廠模式
模板設計模式
構建器(Builder)設計模式
Python設計模式概要
命令設計模式
Python設計模式簡介
觀察者設計模式
代理設計模式
異常處理
責任鏈設計模式
字典實現(xiàn)
抽象工廠設計模式
Python并發(fā)(多線程)
策略設計模式
門面(Facade)設計模式
原型設計模式
迭代器設計模式
集合
單例模式
列表數(shù)據(jù)結構
狀態(tài)設計模式
模型視圖控制器(MVC)模式
裝飾器設計模式
面向?qū)ο蟾拍畹膶崿F(xiàn)
面向?qū)ο笤O計模式
字符串和序列化

抽象工廠設計模式

抽象工廠模式也被稱為工廠的工廠。 此設計模式屬于創(chuàng)建設計模式類別。 它提供了創(chuàng)建對象的最佳方法之一。

它包含一個接口,負責創(chuàng)建與工廠相關的對象。

如何實現(xiàn)抽象工廠模式?

參考以下程序,演示如何實現(xiàn)抽象工廠模式。

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

執(zhí)行上面示例代碼,得到以下結果 -

說明
在上面的程序中,抽象工廠為每個窗口創(chuàng)建對象。 它調(diào)用每個方法,按預期執(zhí)行輸出。