『壹』 使用簡單工廠模式的優點是什麼
簡單工廠模式的優點:
1、工廠類含有必要的判斷邏輯,可以決定在什麼時候創建哪一個產品類的實例,客戶端可以免除直接創建產品對象的責任,而僅僅「消費」產品;
2、簡單工廠模式通過這種做法實現了對責任的分割,它提供了專門的工廠類用於創建對象。
3、客戶端無須知道所創建的具體產品類的類名,只需要知道具體產品類所對應的參數即可,對於一些復雜的類名,通過簡單工廠模式可以減少使用者的記憶量。
4、通過引入配置文件,可以在不修改任何客戶端代碼的情況下更換和增加新的具體產品類,在一定程度上提高了系統的靈活性。
(1)簡單工廠模式工廠方法模式擴展閱讀:
簡單工廠模式的缺點:
1、由於工廠類集中了所有產品創建邏輯,一旦不能正常工作,整個系統都要受到影響。
2、使用簡單工廠模式將會增加系統中類的個數,在一定程序上增加了系統的復雜度和理解難度。
3、系統擴展困難,一旦添加新產品就不得不修改工廠邏輯,在產品類型較多時,有可能造成工廠邏輯過於復雜,不利於系統的擴展和維護。
4、簡單工廠模式由於使用了靜態工廠方法,造成工廠角色無法形成基於繼承的等級結構。
『貳』 誰能幫簡單介紹一下工廠模式呢
你好,很高興能解答你的問題。
首先工廠模式是軟體開發中最常用的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。
在工廠模式中,我們在創建對象時不會對客戶端暴露創建邏輯,並且是通過使用一個共同的介面來指向新創建的對象。
工廠模式主要的意圖是:定義一個創建對象的介面,讓其子類自己決定實例化哪一個工廠類,工廠模式使其創建過程延遲到子類進行。
案列1:您需要一輛汽車,可以直接從工廠裡面提貨,而不用去管這輛汽車是怎麼做出來的,以及這個汽車裡面的具體實現。 2、Hibernate 換資料庫只需換方言和驅動就可以。
優點:1、一個調用者想創建一個對象,只要知道其名稱就可以了。 2、擴展性高,如果想增加一個產品,只要擴展一個工廠類就可以。 3、屏蔽產品的具體實現,調用者只關心產品的介面。
缺點:每次增加一個產品時,都需要增加一個具體類和對象實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的復雜度,同時也增加了系統具體類的依賴。這並不是什麼好事。
案例2:日誌記錄器:記錄可能記錄到本地硬碟、系統事件、遠程伺服器等,用戶可以選擇記錄日誌到什麼地方。 2、資料庫訪問,當用戶不知道最後系統採用哪一類資料庫,以及資料庫可能有變化時。 3、設計一個連接伺服器的框架,需要三個協議,"POP3"、"IMAP"、"HTTP",可以把這三個作為產品類,共同實現一個介面。
注意事項:作為一種創建類模式,在任何需要生成復雜對象的地方,都可以使用工廠方法模式。有一點需要注意的地方就是復雜對象適合使用工廠模式,而簡單對象,特別是只需要通過 new 就可以完成創建的對象,無需使用工廠模式。如果使用工廠模式,就需要引入一個工廠類,會增加系統的復雜度。
希望能幫到你,謝謝!
『叄』 簡單工廠模式,工廠方法模式和抽象工廠模式的異同
工廠方法模式:
一個抽象產品類,可以派生出多個具體產品類。
一個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類只能創建一個具體產品類的實例。
抽象工廠模式:
多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。
一個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類可以創建多個具體產品類的實例。
『肆』 工廠方法模式的模式簡介
工廠方法(Factory Method)模式的意義是定義一個創建產品對象的工廠介面,將實際創建工作推遲到子類當中。核心工廠類不再負責產品的創建,這樣核心類成為一個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角色的情況下引進新的產品。
工廠方法模式是簡單工廠模式的衍生,解決了許多簡單工廠模式的問題。首先完全實現『開-閉 原則』,實現了可擴展。其次更復雜的層次結構,可以應用於產品結果復雜的場合。
工廠方法模式對簡單工廠模式進行了抽象。有一個抽象的Factory類(可以是抽象類和介面),這個類將不再負責具體的產品生產,而是只制定一些規范,具體的生產工作由其子類去完成。在這個模式中,工廠類和產品類往往可以依次對應。即一個抽象工廠對應一個抽象產品,一個具體工廠對應一個具體產品,這個具體的工廠就負責生產對應的產品。
工廠方法模式(Factory Method pattern)是最典型的模板方法模式(Template Method pattern)應用。
『伍』 簡單工廠模式,工廠方法模式和抽象工廠模式有何區別
工廠方法模式:
一個抽象產品類,可以派生出多個具體產品類。
一個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類只能創建一個具體產品類的實例。
抽象工廠模式:
多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。
一個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類可以創建多個具體產品類的實例。
區別:
工廠方法模式只有一個抽象產品類,而抽象工廠模式有多個。
工廠方法模式的具體工廠類只能創建一個具體產品類的實例,而抽象工廠模式可以創建多個。
『陸』 工廠模式,簡單工廠模式,抽象工廠模式三者有什麼區別
工廠模式,簡單工廠模式,抽象工廠模式三者區別如下:
1、首先,三者的創建對象是不相同的。
進行創建對象時,「工廠模式」不使用new創建對象,而是使用Factory模式;「簡單工廠模式」則是通過fw模式來建立對象;「抽象工廠模式」使用迭代模式來創建對象。
(6)簡單工廠模式工廠方法模式擴展閱讀:
簡單工廠模式優缺點
1、優點:
工廠類含有必要的判斷邏輯,可以決定在什麼時候創建哪一個產品類的實例,客戶端可以免除直接創建產品對象的責任,而僅僅"消費"產品。簡單工廠模式通過這種做法實現了對責任的分割。
當產品有復雜的多層等級結構時,工廠類只有自己,以不變應萬變,就是模式的缺點。因為工廠類集中了所有產品創建邏輯,一旦不能正常工作,整個系統都要受到影響。
2、缺點:
系統擴展困難,一旦添加新產品就不得不修改工廠邏輯,有可能造成工廠邏輯過於復雜,違背了"開放--封閉"原則(OCP)。另外,簡單工廠模式通常使用靜態工廠方法,這使得無法由子類繼承,造成工廠角色無法形成基於繼承的等級結構。
『柒』 簡單工廠、工廠方法、抽象工廠有什麼區別
區別
簡單工廠 : 用來生產同一等級結構中的任意產品。(對於增加新的產品,無能為力)
工廠方法 :用來生產同一等級結構中的固定產品。(支持增加任意產品)
抽象工廠 :用來生產不同產品族的全部產品。(對於增加新的產品,無能為力;支持增加產品族)
以上三種工廠 方法在等級結構和產品族這兩個方向上的支持程度不同。所以要根據情況考慮應該使用哪種方法。
『捌』 什麼是簡單工廠和工廠方法
簡單工廠又叫靜態工廠 工廠方法又叫多態性工廠 抽象工廠又叫工具箱 區別: 先看簡單工廠的缺點:復雜的多層次結構;工廠類形成上帝類;靜態方法無法由子類繼承;擴展困難,對開閉原則支持不夠。 工廠方法就是為了克服以上缺點產生的。他將上帝類要做的事分給了下面的子類來完成,它比簡單工廠抽象 而抽象工廠比前兩者更抽象,更具一般性. 他可以提供統一的介面,使得不必說明具體狀況的情況下,創建多種不同的對象
『玖』 簡單工廠模式與工廠方法模式的相同點和不同點
建議LZ把簡單工廠,工廠方法和抽象工廠一起研究下,呵呵,前一段我老師讓我研究下這3種模式的不同,一起學習可能更明白了。
簡單工廠模式又稱靜態工廠方法模式。重命名上就可以看出這個模式一定很簡單。它存在的目的很簡單:定義一個用於創建對象的介面。
先來看看它的組成:
1)工廠類角色:這是本模式的核心,含有一定的商業邏輯和判斷邏輯。在java中它往往由一個具體類實現。
2)抽象產品角色:它一般是具體產品繼承的父類或者實現的介面。在java中由介面或者抽象類來實現。
3)具體產品角色:工廠類所創建的對象就是此角色的實例。在java中由一個具體類實現。
工廠方法模式去掉了簡單工廠模式中工廠方法的靜態屬性,使得它可以被子類繼承。這樣在簡單工廠模式里集中在工廠方法上的壓力可以由工廠方法模式里不同的工廠子類來分擔。
看下它的組成:
1)抽象工廠角色: 這是工廠方法模式的核心,它與應用程序無關。是具體工廠角色必須實現的介面或者必須繼承的父類。在java中它由抽象類或者介面來實現。
2) 具體工廠角色:它含有和具體業務邏輯有關的代碼。由應用程序調用以創建對應的具體產品的對象。
3)抽象產品角色:它是具體產品繼承的父類或者是實現的介面。在java中一般有抽象類或者介面來實現。
4)具體產品角色:具體工廠角色所創建的對象就是此角色的實例。在java中由具體的類來實現。