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

Java設計形式編程中簡略工場與籠統工場形式的應用實例

編輯:關於JAVA

Java設計形式編程中簡略工場與籠統工場形式的應用實例。本站提示廣大學習愛好者:(Java設計形式編程中簡略工場與籠統工場形式的應用實例)文章只能為提供參考,不一定能成為您想要的結果。以下是Java設計形式編程中簡略工場與籠統工場形式的應用實例正文


簡略工場形式
類圖

經由過程一個工場類,以一個前提來創立對應的對象

//營業功效 
public interface ICalculation { 
  double getResult(double numA, double numB); 
} 

public class CalcAdd implements ICalculation { 
 
  @Override 
  public double getResult(double numA, double numB) { 
    System.out.println("加法"); 
    return numA + numB; 
  } 
 
} 

public class CalcSubtract implements ICalculation { 
 
  @Override 
  public double getResult(double numA, double numB) { 
    System.out.println("減法"); 
    return numA - numB; 
  } 
 
} 

/* 
 * 簡略工場形式 存眷:對象的創立 
 * 樹立一個工場類,對完成了統一接口的或許是存在繼續關系的一些類停止實例的創立 
 */ 
public class Test4Simple { 
  public static void main(String[] args) { 
//   String operation = "/"; 
    String operation = "+"; 
//   String operation = "-"; 
//   String operation = "*"; 
    double numA = 182, numB = 33; 
    ICalculation createCalc = CalcSimpleFactory.createCalc(operation); 
    double result = createCalc.getResult(numA, numB); 
    System.out.println(result); 
  } 
} 

簡略工場的缺點: 簡略工場創立產物時須要傳遞響應的參數,假如傳遞不准確就取不到對象了。
改良:多辦法創立分歧產物
類圖

public class CalcMultipleFactory { 
   
  public static ICalculation produceAdd() { 
    return new CalcAdd(); 
  } 
   
  public static ICalculation produceSubtract() { 
    return new CalcSubtract(); 
  } 
   
  public static ICalculation produceMultiply() { 
    return new CalcMultiply(); 
  } 
   
  public static ICalculation produceDivide() { 
    return new CalcDivide(); 
  } 
} 

public class Test4Multiple { 
 
  public static void main(String[] args) { 
    double numA = 182, numB = 33; 
     
    ICalculation createCalc = CalcMultipleFactory.produceAdd(); 
    double result = createCalc.getResult(numA, numB); 
    System.out.println(result); 
     
    createCalc = CalcMultipleFactory.produceSubtract(); 
    result = createCalc.getResult(numA, numB); 
    System.out.println(result); 
     
    createCalc = CalcMultipleFactory.produceMultiply(); 
    result = createCalc.getResult(numA, numB); 
    System.out.println(result); 
     
    createCalc = CalcMultipleFactory.produceDivide(); 
    result = createCalc.getResult(numA, numB); 
    System.out.println(result); 
  } 
} 

籠統工場形式
外面有幾個概念:籠統工場、實體工場、籠統產物、實體產物
籠統工場:界說創立產物的籠統辦法
實體工場:詳細的創立哪一種產物
籠統產物:一個接口或基類
實體產物:完成詳細功效,或派生
類圖

//籠統產物1 
public interface IProduct1 { 
  public void show(); 
} 

//籠統產物2 
public interface IProduct2 { 
  public void show(); 
} 

//實體產物1 
public class Product1 implements IProduct1 {  
  public void show() {  
    System.out.println("創立了1型產物");  
  }  
}  

//實體產物2 
public class Product2 implements IProduct2 { 
  public void show() { 
    System.out.println("創立了2型產物"); 
  } 
} 

/* 
 * 1A 1B屬於Product1 統一產物品級構造中 
 * 2A 2B屬於Product2 
 */ 
public class GradeProduct1A extends Product1 { 
 
  @Override 
  public void show() { 
    super.show(); 
    System.out.println("這是產物1下的:產物A"); 
  } 
   
} 

public class GradeProduct1B extends Product1 { 
 
  @Override 
  public void show() { 
    super.show(); 
    System.out.println("這是產物1下的:產物B"); 
  } 
} 

public class GradeProduct2A extends Product2 { 
 
  @Override 
  public void show() { 
    super.show(); 
    System.out.println("這是產物2下的:產物A"); 
  } 
} 

public class GradeProduct2B extends Product2 { 
 
  @Override 
  public void show() { 
    super.show(); 
    System.out.println("這是產物2下的:產物B"); 
  } 
} 

//籠統工場 創立分歧的籠統產物 
public interface IFactory { 
  public IProduct1 createProduct1A();//1類產物 型號A 
  public IProduct1 createProduct1B();//1類產物 型號B 
  public IProduct2 createProduct2A();//2類產物 型號A 
  public IProduct2 createProduct2B();//2類產物 型號B 
} 

//實體工場 創立實體產物,前往類型為籠統產物 
public class Factory implements IFactory { 
 
  public IProduct1 createProduct1A() { 
    return new GradeProduct1A(); 
  } 
 
  public IProduct1 createProduct1B() { 
    return new GradeProduct1B(); 
  } 
 
  public IProduct2 createProduct2A() { 
    return new GradeProduct2A(); 
  } 
 
  public IProduct2 createProduct2B() { 
    return new GradeProduct2B(); 
  } 
} 

/* 
 * 籠統工場形式:用來創立一組相干或許互相依附的對象 
 * 
 * 流程:籠統工場,實體工場   臨盆產物 
 *   籠統產物,實體產物    完成產物功效 
 * 缺陷:當須要增長一個產物(由籠統和實體組成),工場都須要更改 
 */ 
public class Test4Abstract { 
  public static void main(String[] args) { 
    IFactory factory = new Factory(); 
    IProduct1 product1a = factory.createProduct1A(); 
    product1a.show(); 
    IProduct1 product1b = factory.createProduct1B(); 
    product1b.show(); 
     
    IProduct2 product2a = factory.createProduct2A(); 
    product2a.show(); 
    IProduct2 product2b = factory.createProduct2B(); 
    product2b.show(); 
  } 
} 

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