天天看點

GOF23之工廠模式了解

工廠模式      
工廠模式      
      實作了建立者和調用者的分離      
      詳細分離:      
  1. 簡單工廠模式      
  2. 工廠方法模式      
  3. 抽象工廠模式      
面向對象設計的基本原則      
      OCP(開閉原則,Open-Closed
Principle):一個軟體的屍體應對擴充開放,對修改關閉      
      DIP(依賴倒轉原則, Dependence
Inversion Priciple):要針對接口程式設計,不要針對實作程式設計。針對于抽象而不針對于接口。       
      LoD(迪米特法則, Law of
Demeter):隻與你直接的朋友通信,而避免和陌生人人通信。      
核心本質:      
      執行個體化對象,用工廠方法代替new操作      
      将選擇實作類、建立對象統一管理和控制。進而将調用者跟我們的實作類解耦      
工廠模式:      
      簡單工廠模式:      
           用來生産統一等級結構中的任意産品。(對于增加新的産品,需要修改已有代碼)      
      工廠方法模式:      
           用來生産統一登記結構中的固定場頻。(支援增加任意産品)      
      抽象工廠模式:      
           用來生産不同産品族的全部産品。(對于增加新的産品無能為力;支援增加産品族)      
      簡單工廠模式也叫靜态工廠模式,就是工廠類一般是使用靜态方法,通過接收的參數的不同來傳回不同的對象執行個體。      
      對于增加新産品無能為力,不修改代碼的話,是無法擴充的。      
工廠方法模式:      
      為了避免簡單工廠不滿足OCP開閉原則,通過工廠方法模式解決      
      工廠方法模式與簡單工廠模式最大的不同在于,簡單工廠模式隻有一個(對于一個項目或者一個獨立子產品而言)工廠類,而工廠方法模式,有一組實作了相同接口的工廠類。      
簡單工廠和工廠方法模式比較:      
      結構複雜度      
      代碼複雜度      
      用戶端程式設計複雜度      
      管理上的複雜度      
根據設計理論建議工廠方法模式,但在實際使用中,我們一般都是使用簡單工廠模式      
抽象工廠模式:      
      用來生産不同産品組的全部産品      
      抽象工廠模式是工廠方法模式的更新版本,在多個業務品種,業務分類時,通過抽象工廠模式産生需要的對象是一種非常好的解決方式。      
      工廠模式要點:      
  • 簡單工廠模式(靜态工廠模式)
    
    雖然某種程度不符合設計原則,但實際使用最多      
  • 工廠方法模式
    
    不修改已有類的前提下,通過增加新的類和工廠類實作擴充      
  • 抽象工廠模式
    
    不可以增加産品,可以增加産品族      
  • 應用場景
    
    JDK中Calendar的getInstance()
    
    JDBC中Connection對象的擷取
    
    Hebernate中SessionFactory建立Session
    
    Spring中IOC建立管理bean對象
    
    XML解析時的DocumentBuilderFactory建立解析器對象
    
    反射中Class對象的newInstance()      

繼續閱讀