最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 工廠模式的實例詳解

 更新時間:2017年09月06日 17:00:26   投稿:lqh  
這篇文章主要介紹了java 工廠模式的實例詳解的相關(guān)資料,這里舉例說明該如何實現(xiàn)工廠模式,需要的朋友可以參考下

java 工廠模式的實例詳解

工廠方法中的“工廠”和我們平常理解的一樣:用于生產(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),這顯然不符合“開閉原則(對擴展開放;對修改封閉)”,所以我們把工廠抽象,添加具體的工廠類,由客戶選擇某一個工廠,如下:

//抽象工廠
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é):

無論是簡單工廠模式,工廠方法模式,還是抽象工廠模式,他們都屬于工廠模式,在形式和特點上也是極為相似的,他們的最終目的都是為了解耦。在使用時,我們不必去在意這個模式到底工廠方法模式還是抽象工廠模式,因為他們之間的演變常常是令人琢磨不透的。經(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á)到了。

以上就是java 工廠模式的實例詳解,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 使用springmvc的controller層獲取到請求的數(shù)據(jù)方式

    使用springmvc的controller層獲取到請求的數(shù)據(jù)方式

    這篇文章主要介紹了使用springmvc的controller層獲取到請求的數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java Stream流知識總結(jié)

    Java Stream流知識總結(jié)

    這篇文章主要介紹了Java Stream流的相關(guān)知識,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 詳解Java如何優(yōu)雅的實現(xiàn)異常捕獲

    詳解Java如何優(yōu)雅的實現(xiàn)異常捕獲

    在一個優(yōu)秀的項目中一定少不了對程序流程良好的異常捕獲與日志打印,所以本文主要為大家介紹了如何優(yōu)雅的實現(xiàn)異常捕獲與日志打印輸出,有需要的可以參考下
    2023-09-09
  • Spring入門配置和DL依賴注入實現(xiàn)圖解

    Spring入門配置和DL依賴注入實現(xiàn)圖解

    這篇文章主要介紹了Spring入門配置和DL依賴注入實現(xiàn)圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • 在Mac上安裝JDK21的詳細(xì)流程

    在Mac上安裝JDK21的詳細(xì)流程

    在macOS上安裝JDK(Java Development Kit)21是相對簡單的過程,這篇文章主要給大家介紹了關(guān)于在Mac上安裝JDK21的詳細(xì)流程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • Spring TaskScheduler使用實例解析

    Spring TaskScheduler使用實例解析

    這篇文章主要介紹了Spring TaskScheduler使用實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • 學(xué)習(xí)Java中Class類及其用法

    學(xué)習(xí)Java中Class類及其用法

    這篇文章分為三大部分,主要內(nèi)容有Class類原理詳解、用法及泛化,需要的朋友可以參考下
    2015-07-07
  • MyBatis多表操作查詢功能

    MyBatis多表操作查詢功能

    這篇文章主要介紹了MyBatis多表操作,包括一對一查詢,一對多查詢的模型,多對多查詢的需求,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-11-11
  • 詳解Java 集合系列(三)—— LinkedList

    詳解Java 集合系列(三)—— LinkedList

    這篇文章主要介紹了Java 集合系列(三)—— LinkedList,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Spring計時器StopWatch使用示例

    Spring計時器StopWatch使用示例

    這篇文章主要介紹了Spring計時器StopWatch使用示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評論

大竹县| 江门市| 富民县| 磐安县| 蕉岭县| 高邑县| 盐城市| 富阳市| 临湘市| 桃江县| 清远市| 乌恰县| 稻城县| 仁化县| 卢龙县| 亳州市| 星座| 日喀则市| 普安县| 栾川县| 新龙县| 平度市| 河源市| 博湖县| 高尔夫| 忻州市| 五原县| 商河县| 本溪市| 普兰店市| 丰顺县| 佛冈县| 厦门市| 河西区| 灵璧县| 育儿| 衡南县| 常熟市| 余庆县| 清丰县| 城口县|