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

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

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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲 欧美 国产 日韩 字幕 | 欧美1级| 亚洲免费高清视频 | 国产馆 | 母爱成瘾在线观看 | 国产大秀视频一区二区三区 | 国产精品成人扳一级aa毛片 | 国士李风起全文在线阅读 | 天堂8在线天堂资源在线 | 草逼视频网站 | 国产黄色大片网站 | 日本不卡免免费观看 | 国色天香社区视频免费观看3 | a片毛片在线免费看 | 色吊丝每日永久访问网站 | 男人好大好硬好爽免费视频 | 国产精品视频免费观看 | fc2免费人成为视频 eeuss18影院www国产 | 啊哈~嗯哼~用力cao我小说 | 青青青久在线视频免费观看 | 视频在线观看国产 | acg火影忍者熟密姬纲手h | 国内自拍网红在线综合 | 国产精品成人免费观看 | 外国xxx| 91精品久久一区二区三区 | 九九精品国产亚洲A片无码 九九99热久久999精品 | 偷偷狠狠的日日高清完整视频 | 加勒比伊人 | 亚洲精品97福利在线 | 欧美日韩中文国产一区二区三区 | 国产精品资源在线观看 | 色综合久久最新中文字幕 | 久久精品国产免费 | 亚洲另类第一页 | 黄色大片免费网站 | 99久久精品自在自看国产 | 1986葫芦兄弟全集免费观看第十集 | 精新精新国产自在现拍 | 日本视频一区在线观看免费 | julia ann一hd |