設計模式-簡單工廠模式/靜態工廠方法(Static Factory Method)
阿新 • • 發佈:2019-01-03
使用原因
同一個呼叫,需要不同物件。統一通過工廠生產不同物件,建立物件的邏輯在工廠中。
定義
簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(Static Factory Method)模式,不屬於23種GOF設計模式。簡單工廠模式是由一個工廠物件決定創建出哪一種產品類的例項。是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的一個特殊實現。
ps.以上內容來自百度百科
示例:
工廠根據傳入的資料,生產出相應的物件
//計算方式 工廠類,用於生產相應的演算法子類 public class OperationFactory { public Operation getOperation(String operator){ Operation oa = null; switch(operator){ case "+": oa = new AddOperation(); return oa; case "-": oa = new SubtractOperation(); return oa; /*case "*": oa = new MultiplicationOperation(); return oa; case "/": oa = new DivisionOperation(); return oa;*/ } return null; } }
//演算法介面 定義方法
public interface Operation {
public double getResult(double numA, double numB);
}
//演算法實現類,由工廠類建立,重寫父類中的虛擬函式 加減乘除都需要有單獨的類 public class AddOperation implements Operation { @Override public double getResult(double numA, double numB) { // TODO Auto-generated method stub return numA + numB; } } ........
//測試類
import java.util.Scanner;
public class MainProgream {
public static void main(String args[]){
while(true){
try{
Scanner input =new Scanner(System.in);
System.out.println("input numA");
String instr = input.nextLine();
double numA = Double.parseDouble(instr);
System.out.println("input numB");
instr = input.nextLine();
double numB = Double.parseDouble(instr);
System.out.println("input + - * / ");
instr = input.nextLine();
String operator = instr;
System.out.print(numA + operator + numB + "=" );
Operation o = new OperationFactory().getOperation(operator);
System.out.println(o.getResult(numA, numB));
}catch(Exception e){
System.out.println("輸入格式不對");
}
}
}
}