程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java設計形式之工場辦法形式實例簡析

Java設計形式之工場辦法形式實例簡析

編輯:關於JAVA

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、工場辦法形式是典范的解耦框架。。高層模塊值須要曉得產物的籠統類,其他的完成類都不消關懷,相符迪米特軌則,我們不須要的就不要去交換;也相符依附顛倒准繩,只依附產物的籠統類;固然也相符裡氏調換准繩,應用產物子類調換產物父類,沒成績。

工場辦法形式的通用代碼以下:

//籠統產物類 
public abstract class Product {
  //產物類的公共辦法 
  public void method1() { 
    //營業邏輯處置 
  } 
  //籠統辦法 
  public abstract void method2();
} 

詳細的產物類可以有多個,都繼續於籠統產物類,源代碼以下:

//詳細產物類 
public class ConcreteProduct1 extends Product {
  public void method2() { 
    //營業邏輯處置 
  } 
} 
public class ConcreteProduct2 extends Product {
  public void method2() { 
    //營業邏輯處置 
  } 
}

籠統工場類擔任界說產物對象的發生,源代碼以下:

//籠統工場類 
public abstract class Creator { 
  /** 
  *創立一個產物類,其輸出參數類型可以自行設置,平日為String,Enum, Class,固然可認為空
  */ 
  public abstract <T extends Product> T createProduct(Class<T> cls);
} 

詳細若何發生一個產物的對象,是有詳細的工場類完成的,源代碼以下:

//詳細工場類 
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; 
  } 
} 

場景類的挪用辦法以下代碼:

//場景類 
public class Client { 
  public static void main(String[] args) { 
    Creator creator = new ConcreteCreator(); 
    Product product = creator.createProduct(ConcreteProduct1.class);
    /** 
    *持續營業處置 
    */ 
  } 
}

改通用代碼是一個比擬適用、易擴大的框架,讀者可以依據現實項目須要停止擴大。

願望本文所述對年夜家Java法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved