設計模式(一)—— 簡單工廠模式
設計模式(一)—— 簡單工廠模式
一、工廠模式概述
1. 定義
簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(Static Factory Method)模式,但不屬於23種GOF設計模式之一。簡單工廠模式是由一個工廠物件決定建立出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的一個特殊實現。
2. 簡單工廠模式結構圖
二、工廠模式實現
我們以計算器為例實現簡單工廠模式:
1. 定義計算操作介面
程式碼如下:
public interface Operation {
double GetResult(double numberA, double numberB, String operate);
}
2. 定義計算操作工廠
程式碼如下:
public class OperationFactory {
//測試程式碼,一般使用配置檔案代替
public static final Map<String,String> typeMap = new HashMap<>();
static{
typeMap.put("+","com.simplefactory.OperationAdd");
typeMap.put("-","com.simplefactory.OperationSub");
typeMap.put("*","com.simplefactory.OperationMul");
typeMap.put("/","com.simplefactory.OperationDiv");
}
/**
* 獲取Operation物件
* @param type
* @return
*/
public static Operation getOperation(String type) {
Operation operation = null;
try {
operation = (Operation) Class.forName(typeMap.get(type)).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return operation;
}
}
3. 定義操作(加、減、乘、除)類
程式碼如下(加法):
public class OperationAdd implements Operation {
@Override
public double GetResult(double numberA, double numberB, String operate) {
double resule = 0;
resule = numberA + numberB;
return resule;
}
}
程式碼如下(減法):
public class OperationSub implements Operation{
@Override
public double GetResult(double numberA, double numberB, String operate) {
double resule = 0;
resule = numberA - numberB;
return resule;
}
}
程式碼如下(乘法):
public class OperationMul implements Operation{
@Override
public double GetResult(double numberA, double numberB, String operate) {
double resule = 0;
resule = numberA * numberB;
return resule;
}
}
程式碼如下(除法):
public class OperationDiv implements Operation {
@Override
public double GetResult(double numberA, double numberB, String operate) {
double resule = 0;
if (numberB == 0)
throw new RuntimeException("除數不能為0!");
resule = numberA/numberB;
return resule;
}
}
4. 測試類及測試結果
程式碼如下:
public class Test {
public static void main(String[] args) throws IllegalAccessException, InstantiationException, ClassNotFoundException {
Operation add = OperationFactory.getOperation("+");
double addResult = add.GetResult(5,2,"1");
System.out.println(addResult);
Operation sub = OperationFactory.getOperation("-");
double subResult = sub.GetResult(5,2,"1");
System.out.println(subResult);
Operation mul = OperationFactory.getOperation("*");
double mulResult = mul.GetResult(5,2,"1");
System.out.println(mulResult);
Operation div = OperationFactory.getOperation("/");
double divResult = div.GetResult(5,2,"1");
System.out.println(divResult);
}
}
測試結果:
7.0
3.0
10.0
2.5
相關文章
- 設計模式 - 簡單工廠模式設計模式
- 【設計模式】簡單工廠模式設計模式
- 設計模式-簡單工廠、工廠方法模式、抽象工廠模式設計模式抽象
- 設計模式系列之一:簡單工廠模式設計模式
- 23種設計模式(一)---簡單工廠設計模式設計模式
- 設計模式之簡單工廠模式設計模式
- java設計模式-簡單工廠模式Java設計模式
- C# 設計模式(1)——簡單工廠模式、工廠模式、抽象工廠模式C#設計模式抽象
- 設計模式----簡單工廠設計模式
- 設計模式之工廠模式!深入解析簡單工廠模式,工廠方法模式和抽象工廠模式設計模式抽象
- golang設計模式之簡單工廠模式Golang設計模式
- 設計模式入門-簡單工廠模式設計模式
- 掌握設計模式之簡單工廠模式設計模式
- 設計模式第一篇 簡單工廠設計模式設計模式
- PHP設計模式(一)簡單工廠模式 (Simple Factory For PHP)PHP設計模式
- Java常用設計模式之簡單工廠模式Java設計模式
- 設計模式 --並不簡單的工廠模式設計模式
- Yii2設計模式——簡單工廠模式設計模式
- c#簡單工廠設計模式C#設計模式
- 極簡設計模式-工廠模式設計模式
- 工廠模式之簡單工廠模式模式
- 設計模式 | 簡單工廠模式及典型應用設計模式
- 設計模式-C#實現簡單工廠模式設計模式C#
- 一篇搞定工廠模式【簡單工廠、工廠方法模式、抽象工廠模式】模式抽象
- 簡單工廠模式、工廠模式、抽象工廠模式比較模式抽象
- 簡單工廠模式和抽象工廠模式模式抽象
- 工廠模式(簡單工廠模式)快速理解模式
- 5分鐘學設計模式之《簡單工廠模式》設計模式
- 大話設計模式筆記の 簡單工廠模式設計模式筆記
- 一.設計模式之工廠設計模式設計模式
- 設計模式之工廠模式(一)設計模式
- JS設計模式一:工廠模式JS設計模式
- JS設計模式(一)--- 工廠模式JS設計模式
- 簡單工廠模式模式
- 【Java】簡單工廠模式、工廠模式、介面卡模式Java模式
- 設計模式系列——3.簡單工廠模式與策略模式總結設計模式
- Java設計模式學習筆記(二) 簡單工廠模式Java設計模式筆記
- python開發中常用的設計模式(簡單工廠模式)Python設計模式