在java項(xiàng)目中實(shí)現(xiàn)工廠模式的方法?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
創(chuàng)新互聯(lián)公司主要從事做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)烏爾禾,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
java 工廠模式的實(shí)例詳解
工廠方法中的“工廠”和我們平常理解的一樣:用于生產(chǎn)產(chǎn)品。
而客戶是要和產(chǎn)品打交道,所以工廠方法模式的意義在于把客戶和產(chǎn)品分開,達(dá)到解耦和更靈活的目的。
一般我們有一個(gè)產(chǎn)品的抽象類,然后有幾個(gè)具體的產(chǎn)品,如下:
//抽象產(chǎn)品角色 public interface Product{ void product(); } //具體產(chǎn)品1 public class Pro1 implements Product{ @Override public void product() { System.out.println("產(chǎn)品1"); } } //具體產(chǎn)品2 public class Pro2 implements Product{ @Override public void product() { System.out.println("產(chǎn)品2"); } }
接著客戶要購(gòu)買產(chǎn)品,他不直接和產(chǎn)品接觸,而是使用工廠,所以我們有一個(gè)工廠:
public class Factory { public static Product buy(type) { switch (type) { case 1: return new Pro1(); case 2: return new Pro2(); default: break; } return null; } }
客戶通過Factory .buy(type);即可購(gòu)買到自己想要的產(chǎn)品。
————— 這就是 簡(jiǎn)單工廠模式,又稱為 靜態(tài)工廠方法模式。
如果新增了一款產(chǎn)品,我們多寫一個(gè)產(chǎn)品類Pro3就可以了,但在工廠上我們要添加新的代碼才能生產(chǎn),這顯然不符合“開閉原則(對(duì)擴(kuò)展開放;對(duì)修改封閉)”,所以我們把工廠抽象,添加具體的工廠類,由客戶選擇某一個(gè)工廠,如下:
//抽象工廠 public interface Factory { Product buy(); } //具體工廠1 public class Factory1 implements Factory { @Override public Product buy() { return new Pro1(); } } //具體工廠2 public class Factory2 implements Factory { @Override public Product buy() { return new Pro2(); } }
當(dāng)新增了一款產(chǎn)品,我們多創(chuàng)建一個(gè)具體的工廠來生產(chǎn)就可以了。但是當(dāng)產(chǎn)品種類非常多時(shí),會(huì)出現(xiàn)大量的與之對(duì)應(yīng)的工廠對(duì)象,這并不是我們所希望的。
——— 這就是 工廠方法模式
當(dāng)產(chǎn)品出現(xiàn)多個(gè)抽象時(shí),我們可能會(huì)有多個(gè)產(chǎn)品接口,這個(gè)場(chǎng)景就成了我們所說的
——- 抽象工廠模式
總結(jié):
無論是簡(jiǎn)單工廠模式,工廠方法模式,還是抽象工廠模式,他們都屬于工廠模式,在形式和特點(diǎn)上也是極為相似的,他們的最終目的都是為了解耦。在使用時(shí),我們不必去在意這個(gè)模式到底工廠方法模式還是抽象工廠模式,因?yàn)樗麄冎g的演變常常是令人琢磨不透的。經(jīng)常你會(huì)發(fā)現(xiàn),明明使用的工廠方法模式,當(dāng)新需求來臨,稍加修改,加入了一個(gè)新方法后,由于類中的產(chǎn)品構(gòu)成了不同等級(jí)結(jié)構(gòu)中的產(chǎn)品族,它就變成抽象工廠模式了;而對(duì)于抽象工廠模式,當(dāng)減少一個(gè)方法使的提供的產(chǎn)品不再構(gòu)成產(chǎn)品族之后,它就演變成了工廠方法模式。 所以,在使用工廠模式時(shí),只需要關(guān)心降低耦合度的目的是否達(dá)到了。
看完上述內(nèi)容,你們掌握在java項(xiàng)目中實(shí)現(xiàn)工廠模式的方法的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!