溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

在java項目中實(shí)現(xiàn)工廠模式的方法

發(fā)布時間:2020-12-04 15:50:30 來源:億速云 閱讀:137 作者:Leah 欄目:編程語言

在java項目中實(shí)現(xiàn)工廠模式的方法?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

java 工廠模式的實(shí)例詳解

工廠方法中的“工廠”和我們平常理解的一樣:用于生產(chǎn)產(chǎn)品。

而客戶是要和產(chǎn)品打交道,所以工廠方法模式的意義在于把客戶和產(chǎn)品分開,達(dá)到解耦和更靈活的目的。

一般我們有一個產(chǎn)品的抽象類,然后有幾個具體的產(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");
  }
}

接著客戶要購買產(chǎn)品,他不直接和產(chǎn)品接觸,而是使用工廠,所以我們有一個工廠:

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);即可購買到自己想要的產(chǎn)品。

————— 這就是 簡單工廠模式,又稱為 靜態(tài)工廠方法模式。

如果新增了一款產(chǎn)品,我們多寫一個產(chǎn)品類Pro3就可以了,但在工廠上我們要添加新的代碼才能生產(chǎn),這顯然不符合“開閉原則(對擴(kuò)展開放;對修改封閉)”,所以我們把工廠抽象,添加具體的工廠類,由客戶選擇某一個工廠,如下:

//抽象工廠
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)建一個具體的工廠來生產(chǎn)就可以了。但是當(dāng)產(chǎn)品種類非常多時,會出現(xiàn)大量的與之對應(yīng)的工廠對象,這并不是我們所希望的。

——— 這就是 工廠方法模式

當(dāng)產(chǎn)品出現(xiàn)多個抽象時,我們可能會有多個產(chǎn)品接口,這個場景就成了我們所說的

——- 抽象工廠模式

總結(jié):

無論是簡單工廠模式,工廠方法模式,還是抽象工廠模式,他們都屬于工廠模式,在形式和特點(diǎn)上也是極為相似的,他們的最終目的都是為了解耦。在使用時,我們不必去在意這個模式到底工廠方法模式還是抽象工廠模式,因?yàn)樗麄冎g的演變常常是令人琢磨不透的。經(jīng)常你會發(fā)現(xiàn),明明使用的工廠方法模式,當(dāng)新需求來臨,稍加修改,加入了一個新方法后,由于類中的產(chǎn)品構(gòu)成了不同等級結(jié)構(gòu)中的產(chǎn)品族,它就變成抽象工廠模式了;而對于抽象工廠模式,當(dāng)減少一個方法使的提供的產(chǎn)品不再構(gòu)成產(chǎn)品族之后,它就演變成了工廠方法模式。 所以,在使用工廠模式時,只需要關(guān)心降低耦合度的目的是否達(dá)到了。

看完上述內(nèi)容,你們掌握在java項目中實(shí)現(xiàn)工廠模式的方法的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI