設計模式之三 工廠模式

2021-06-21 07:49:52 字數 2197 閱讀 5371

如果要擴充套件的話,則要修改源**,這樣如果以後產生的phone型別很多,那麼就要一直修改,**維護成本高(如果萬一你哪個型別寫錯了怎麼辦)

所以出現了工廠模式。

工廠模式簡單來說就是乙個工廠對應乙個產品。比如說iphonefactory產生iphone系列的手機,xiaomifactory產生xiaomi系列的手機。

讓我們看看uml圖吧。

看下**吧

首先是phone介面

package edu.fjnu.cs.hwb.factory;

public inte***ce phone

然後是具體的實現類

首先是iphone4的

package edu.fjnu.cs.hwb.factory;

import edu.fjnu.cs.hwb.factory.*;

public class iphone4 implements phone

}

之後是iphone4s的

package edu.fjnu.cs.hwb.factory;

import edu.fjnu.cs.hwb.factory.*;

public class iphone4s implements phone

}

之後是xiaomi2的

package edu.fjnu.cs.hwb.factory;

import edu.fjnu.cs.hwb.factory.*;

public class xiaomi2 implements phone

}

之後是xiaomi2s的

package edu.fjnu.cs.hwb.factory;

import edu.fjnu.cs.hwb.factory.*;

public class xiaomi2s implements phone

}

好了,現在看看工廠吧

首先是工廠介面

package edu.fjnu.cs.hwb.factory;

//定義工廠介面

public inte***ce phonefactory

在看看對應的工廠

首先是iphone的工廠

package edu.fjnu.cs.hwb.factory;

public class iphonefactory implements phonefactory

else if(name.equalsignorecase("iphone4s"))

else

return phone;

}}

之後是xiaomi工廠

package edu.fjnu.cs.hwb.factory;

public class xiaomifactory implements phonefactory

else if(name.equalsignorecase("xiaomi2s"))

else

return phone;

}}

在看看客戶端怎麼使用

package edu.fjnu.cs.hwb.factory;

/*** * 工廠模式:

* 抽象出乙個工廠,還有手機類

* 分門別類的為每個手機做乙個工廠,該工廠專門為某個手機服務

*/public class client

catch(exception ex)

}}

結果

總結一下:工廠模式比簡單工廠好一點,至少它容易擴充套件了。但是如果有多個產品的話,那麼不就意味這要弄多個工廠?(假設我們現在需要computer,那就意味著還要寫多個工廠),所以就會出現了抽象工廠設計模式,抽象工廠就是要針對產品族的!

下次再講抽象工廠。

如果有講不對的,請指出來。

每日設計模式 工廠模式之三(抽象工廠模式)

抽象工廠又叫做工廠的工廠。從某個角度來說抽象工廠是工廠方法模式的公升級版。工廠方法模式相對簡單,只負責某一類產品的建立工作,而工廠方法模式很強大,能建立很多的產品,從這個角度來說抽象工廠模式確實是工廠方法模式的公升級。但是,從職能和應用場景上來看,不應該將抽象工廠看成是工廠方法模式的公升級版。工廠方...

設計模式之(三) 工廠方法模式

女媧補天的故事大家都聽過吧,這個故事是說,女媧在補了天後,下到凡間一看,哇塞,風景太優美了,天空是湛 藍的,水是清澈的,空氣是清新的,太美麗了,然後就待時間長了就有點寂寞了,沒有動物,這些看的到 都是靜態的東西呀,怎麼辦?別忘了是神仙呀,沒有辦不到的事情,於是女媧就架起了八卦爐 技術術語 建立工廠 ...

探索設計模式之三 抽象工廠模式

前面介紹的 簡單工廠模式 和 工廠方法模式 立足點都是避免顯式的建立具體物件,封裝建立物件時可能出現的變化點,這已經能比較好的解決單個物件建立的問題,但實際業務中,還經常出現需要一系列物件互相關聯使用來完成任務的情況。對於存在關聯 以來的產品來說,使用簡單工廠或者工廠方法乙個乙個的建立其中的具體產品...