一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java設計模式之工廠方法模式實例簡析

Java設計模式之工廠方法模式實例簡析

2020-01-15 14:37freesonhp JAVA教程

這篇文章主要介紹了Java設計模式之工廠方法模式,較為詳細的分析了Java工廠模式的功能、定義并給出了實例代碼加以總結分析,需要的朋友可以參考下

本文實例講述了Java設計模式之工廠方法模式。分享給大家供大家參考,具體如下:

工廠方法模式使用的頻率非常高,在我們日常的開發中總能遇見到它的身影。其定義為:Define an interface for creating an object, but let subclass decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses.(定義一個用于創建對象的接口,讓子類決定實例化哪一個類。工廠方法是一個類的實例化延遲到其子類。)

工廠方法模式的優點:

1、良好的封裝性,代碼結構清晰。一個對象創建是有條件約束的,如一個調用者需要一個具體的產品對象,只要知道這個產品的類名(或約束字符串)就可以了,不用知道創建對象的艱辛過程,降低模塊間的耦合。
2、工廠方法模式的擴展性非常優秀。在增加產品類的情況下,只要適當地修改具體的工廠類或者擴展一個工廠類,就可以完成“擁抱變化”。
3、屏蔽產品類。這一點非常重要,產品類的實現如何變化,調用者都不需要關心,它只需關心產品的接口,只要接口保持不變,系統中的上層模塊就不需要發生變化。因為產品類的實例化是由工廠類負責的,一個產品對象具體由哪一個產品產生是由工廠類決定的。
4、工廠方法模式是典型的解耦框架。。高層模塊值需要知道產品的抽象類,其他的實現類都不用關心,符合迪米特法則,我們不需要的就不要去交流;也符合依賴倒置原則,只依賴產品的抽象類;當然也符合里氏替換原則,使用產品子類替換產品父類,沒問題。

工廠方法模式的通用代碼如下:

?
1
2
3
4
5
6
7
8
9
//抽象產品類
public abstract class Product {
  //產品類的公共方法
  public void method1() {
    //業務邏輯處理
  }
  //抽象方法
  public abstract void method2();
}

具體的產品類可以有多個,都繼承于抽象產品類,源代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
//具體產品類
public class ConcreteProduct1 extends Product {
  public void method2() {
    //業務邏輯處理
  }
}
public class ConcreteProduct2 extends Product {
  public void method2() {
    //業務邏輯處理
  }
}

抽象工廠類負責定義產品對象的產生,源代碼如下:

?
1
2
3
4
5
6
7
//抽象工廠類
public abstract class Creator {
  /**
  *創建一個產品類,其輸入參數類型可以自行設置,通常為String,Enum, Class,當然可以為空
  */
  public abstract <T extends Product> T createProduct(Class<T> cls);
}

具體如何產生一個產品的對象,是有具體的工廠類實現的,源代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
//具體工廠類
public class ConcteteCreator extends Creator {
  public <T extends Product> T createProduct(Class<T> cls) {
    Product product = null;
    try {
      product = (Product)Class.forName(cls.getName()).newInstance();
    } catch (Exception e) {
      //異常處理
    }
    return (T)product;
  }
}

場景類的調用方法如下代碼:

?
1
2
3
4
5
6
7
8
9
10
//場景類
public class Client {
  public static void main(String[] args) {
    Creator creator = new ConcreteCreator();
    Product product = creator.createProduct(ConcreteProduct1.class);
    /**
    *繼續業務處理
    */
  }
}

改通用代碼是一個比較實用、易擴展的框架,讀者可以根據實際項目需要進行擴展。

希望本文所述對大家Java程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91精品国产91热久久久久福利 | 日本人护士免费xxxx视频 | 国产一区二区三区水野朝阳 | 精品视频免费在线观看 | 极限淫生小说 | 国产精品久久久久久影视 | 亚洲AV 无码AV 中文字幕 | 福利片中文 | 欧美一区二区三区免费看 | 欧洲vodafonewi精品 | 免费视频精品一区二区 | 好大好湿好硬好爽好深免费视频 | 日本卡一卡2卡3卡4精品卡无人区 | 国产在线欧美精品 | 成人网18免费网站 | 羲义嫁密着中出交尾gvg794 | 成人久久18网站 | 性xxx免费 | bt伙计最新合集 | 美女被的在线网站91 | 国产视频播放 | 特级淫片大乳女子高清视频 | 嫩草影院永久在线一二三四 | 国产老太婆hd老头 | 果冻传媒91| 午夜一级免费视频 | 久久sese | av毛片在线看 | voyeur 中国女厕 亚洲女厕 | 亚洲精品一区二区观看 | 国产乱人乱精一区二区视频密 | 2021小妲己永久回家地址 | 无人区在线观看免费国语完整版 | 91tv破解版不限次数 | 99精品视频免费在线观看 | 无码AV熟妇素人内射V在线 | 四虎影院精品 | 亚洲精品视频在线 | 国产好深好硬好爽我还要视频 | 亚洲精品久久碰 | 免费看片黄色 |