設計模式工廠模式
㈠ 工廠設計模式的作用是什麼
在面向對象編程中, 最通常的方法是一個new操作符產生一個對象實例,new操作符就是用來構造對象實例的。但是在一些情況下, new操作符直接生成對象會帶來一些問題。舉例來說, 許多類型對象的創造需要一系列的步驟: 你可能需要計算或取得對象的初始設置; 選擇生成哪個子對象實例; 或在生成你需要的對象之前必須先生成一些輔助功能的對象。 在這些情況, 新對象的建立就是一個 「過程」,不僅是一個操作,像一部大機器中的一個齒輪傳動。
問題
你如何能輕松方便地建立這么" 復雜 " 的對象即操作中不需要粘貼復制呢?
解決方法
建立一個工廠(一個函數或一個類方法)來製造新的對象。為了理解工廠的用處, 試想以下的不同之處……
下載php設計模式.chm
㈡ 設計模式簡單工廠模式
工廠是指生產實例的地方。那就簡單一個,直接命名為createInstance()。此方法通常是靜態的,而且回還會帶有答參數和返回值。舉個例子:例如牛、羊、馬、狗都繼承動物類,那createInstance()的返回值應該為 動物(因為工廠就是生產動物的嘛,所以返回值也應該為動物),參數應該為動物名稱(這樣工廠根據名稱才知道你要生產哪種動物啊)。這樣就可以根據傳入的的動物名稱,產生一個動物實例。createInstance的實現:switch(動物名稱) case 牛:return new 牛();case 羊:return new 羊();case 馬:return new 馬();case 狗:return new 狗();
㈢ java 設計模式(工廠方法)
面向抽象(抽象類或介面)編程。
IWorkFactory studentWorkFactory = new StudentWorkFactory(); 注意:類型是介面類型,即抽象工廠,抽象工廠生產的是抽象產品,而new的則是具體工廠,是由子類實現的,具體工廠生產具體產品。面向抽象的好處:1.在設計抽象的時候不用管具體的實現,只要定義介面知道它用來干什麼就行,這樣,我只需要知道抽象介面就能繼續下面的開發設計工作了,而不用事先設計具體的實現內容;2. 可以擴展多個子類實現抽象介面,更利於系統後期的擴展,而對原系統不造成任何影響,即:開-閉原則。
TeacherWork tt = new TeacherWork(); 不用說就是面向具體實現類編程,缺點就是擴展性不好,對系統後期維護擴展影響較大。
舉個簡單的例子:
假如在系統的A.java中代碼中使用了TeacherWork 類型對象,是滿足了目前軟體的需求,但是,如果有一天需求變化了需要一個StudentWork 類型對象,該怎麼辦?只能修改A.java類來滿足這樣的修改需求。這樣就影響了原來系統結構穩定性,需要重新調試和測試,而這帶來的維護成本是非常大的,有時可能還會帶來系統錯誤,而影響系統運行。
如果在A.java類中應用Work介面類型就不會存在這種問題,A.java不需要任何修改,只需要修改注入到A中的Work介面的具體實現類即可。
面向抽象編程的好處就在於對系統維護和擴展上,即在不影響原系統穩定運行的基礎上增加新的擴展行為,即要符合「開-閉」原則。可能會因此而失去一定的效率問題,但是對於後期的維護成本來說,這個可以忽略不計。 推薦你一本好書:《軟體秘笈-設計模式那點事》其中講解的設計模式很到位,還有每個模式的靜態類圖和JDK中設計模式的具體分析講解,讀了收獲一定很大。祝你成功!
㈣ Java中常用的設計模式有哪些請詳細說明一下工廠模式。
1.單例模式(有的書上說叫單態模式其實都一樣)
該模式主要目的是使內存中保持1個對象
2.工廠模式
該模式主要功能是統一提供實例對象的引用。看下面的例子:
public class Factory{
public ClassesDao getClassesDao(){
ClassesDao cd = new ClassesDaoImpl();
return cd;
}
}
interface ClassesDao{
public String getClassesName();
}
class ClassesDaoImpl implements ClassesDao {
public String getClassesName(){
System.out.println("A班");
}
}
class test
{
public static void main(String[] args){
Factory f = new Factory();
f.getClassesDao().getClassesName();
}
}
這個是最簡單的例子了,就是通過工廠方法通過介面獲取對象的引用
3.建造模式
該模式其實就是說,一個對象的組成可能有很多其他的對象一起組成的,比如說,一個對象的實現非常復雜,有很多的屬性,而這些屬性又是其他對象的引用,可能這些對象的引用又包括很多的對象引用。封裝這些復雜性,就可以使用建造模式。
4.門面模式
這個模式個人感覺像是Service層的一個翻版。比如Dao我們定義了很多持久化方法,我們通過Service層將Dao的原子方法組成業務邏輯,再通過方法向上層提供服務。門面模式道理其實是一樣的。
5.策略模式
這個模式是將行為的抽象,即當有幾個類有相似的方法,將其中通用的部分都提取出來,從而使擴展更容易。
㈤ Java中常用的設計模式有哪些請詳細說明一下工廠模式。
一共23種設計模式!
引用《軟體秘笈-設計模式那點事》書籍:
按照目的來分,設計模式可以分為創建型模式、結構型模式和行為型模式。
創建型模式用來處理對象的創建過程;結構型模式用來處理類或者對象的組合;行為型模式用來對類或對象怎樣交互和怎樣分配職責進行描述。
創建型模式用來處理對象的創建過程,主要包含以下5種設計模式:
工廠方法模式(Factory Method Pattern)
抽象工廠模式(Abstract Factory Pattern)
建造者模式(Builder Pattern)
原型模式(Prototype Pattern)
單例模式(Singleton Pattern)
結構型模式用來處理類或者對象的組合,主要包含以下7種設計模式:
適配器模式(Adapter Pattern)
橋接模式(Bridge Pattern)
組合模式(Composite Pattern)
裝飾者模式(Decorator Pattern)
外觀模式(Facade Pattern)
享元模式(Flyweight Pattern)
代理模式(Proxy Pattern)
行為型模式用來對類或對象怎樣交互和怎樣分配職責進行描述,主要包含以下11種設計模式:
責任鏈模式(Chain of Responsibility Pattern)
命令模式(Command Pattern)
解釋器模式(Interpreter Pattern)
迭代器模式(Iterator Pattern)
中介者模式(Mediator Pattern)
備忘錄模式(Memento Pattern)
觀察者模式(Observer Pattern)
狀態模式(State Pattern)
策略模式(Strategy Pattern)
模板方法模式(Template Method Pattern)
訪問者模式(Visitor Pattern)
抽象工廠模式(Abstract Factory Pattern)提供了一個介面,用於創建相關或者依賴對象的家族,而不需要指定具體實現類。
抽象工廠模式允許客戶使用抽象介面來創建一組相關的產品,客戶類和工廠類分開,客戶需要任何產品的時候,只需要向工廠請求即可,客戶無須修改就可以獲得新產品。這樣一來,客戶就從具體產品中解耦。
詳情請參考書籍《軟體秘笈:設計模式那點事》,裡面講解的23中設計模式例子很生動,容易理解,還有JDK中設計模式應用情況,看了收獲挺大的!好東西大家一起分享!
祝你早日學會設計模式!
㈥ 在設計模式中什麼是工廠方法模式
工廠方法模式(FACTORY METHOD)是一種常用的對象創建型設計模式,此模式的核心精神是封裝回類中不變的部分,提答取其中個性化善變的部分為獨立類,通過依賴注入以達到解耦、復用和方便後期維護拓展的目的。它的核心結構有四個角色,分別是抽象工廠;具體工廠;抽象產品;具體產品
㈦ java設計模式之工廠模式的一個小問題
你除了加分做了繼承其他都沒繼承啊,像這種問題好好檢查一下就能解決哈
㈧ java什麼是工廠設計模式
把創建對象的工作,交給一個抽象出來的概念'工廠'去做,就是工廠設計模版式。比如,你要新建一個用權戶對象 User user=new User();這很簡單,也好理解。但是如果你用工廠設計模式去做,就算最簡單的實現你也得加個類型,如:UserFactory,而裡面的代碼可能只是:
public static User getUser(){
return new User();
}
在使用的時候就是變成:User user = UserFactory.getUser();
嗯,看起來是多此一舉,沒錯,我這場景就是多此一舉。工廠模式適用場景,首先得有較復雜的子父類結構,再者創建邏輯可能很復雜,這樣才有意義,才有必要去使用工廠模式。又或者這個傻逼對象創建起來很消耗性能,且不是非得是全新的才能用,那麼可以配合單例模式一起使用,實現對象的復用,達到性能優化的目的。
嗯,你可能又會疑惑,啥是單例,給你個很傻的描述:有個神奇的類,他有個神奇的方法,這個方法會幫你創建一個對象,且不管調用幾次,怎麼調用,他都保證只給你一個,且百分百是同一個。
㈨ MVC模式和工廠模式都是屬於設計模式嗎
都是設計模式,mvc是一種復合的模式,工廠是基本
㈩ 在設計模式中什麼是工廠方法模式
先說下簡單工廠,簡單工廠是將(需要初始化的條件負責時)對象的創建封裝,在內靜態方法中通過分支語容句自動生成各種情況下的對象實例。
工廠方法主要區別與簡單方法工廠是因為有個工廠抽象類,用來聲明創建對象的方法介面,而具體的創建在工廠抽象類的具體子類中來實現,根據不同的對象實例設計不同的具體工廠子類,比簡單工廠少了分支語句,又應用了多態。