簡單工廠模式
開放-封閉原則:軟體實體包含類、子產品、函數等,它們都應該是可擴充的(開放),但本身不可修改(封閉)。
個人了解: 就是對外開放,對内封閉。多擴充,少修改。
簡單工廠方法:定義一個用于建立對象的接口,讓子類決定執行個體化哪一個類。
個人了解: 就是建立一個工廠類,由它産生你所需要的對象。
接下來依據一個簡單的案例來實作簡單工廠模式:設計一個簡單的控制台電腦。這個案例相信很多在校學生都成做過。
簡單說明: 簡單設計加減乘除等運算方式即可。
UML結構圖
開始碼上~~~由于代碼比較簡單就沒有全員打上注釋
//運算類
public abstract class OperationAbst {
//兩個操作數
private double numberA=0;
private double numberB=0;
//基本的setter和getter
public double getNumberA() {
return numberA;
}
public void setNumberA(double numberA) {
this.numberA = numberA;
}
public double getNumberB() {
return numberB;
}
public void setNumberB(double numberB) {
this.numberB = numberB;
}
//擷取兩個值的結果
public double getResult(){
double result=0;
return result;
}
}
由于不同的算法改變的隻有運算方式,是以我們可以通過建立一個虛方法getResult(),給子類繼承并依據不同的子類實作不同的運算操作具體代碼如下:
//加法類
public class OperationAdd extends OperationAbst{
public double getResult() {
double result=0;
result=getNumberA()+getNumberB();
return result;
}
}
//減法類
public class OperationSub extends OperationAbst{
public double getResult() {
double result=0;
result=getNumberA()-getNumberB();
return result;
}
}
//乘法類
public class OperationMul extends OperationAbst{
public double getResult() {
double result=0;
result=getNumberA()*getNumberB();
return result;
}
}
//除法類
public class OperationDiv extends OperationAbst{
public double getResult() {
double result=0;
if(getNumberB()==0) {
System.out.println("除數不能為0");
return 0;
}
result=getNumberA()/getNumberB();
return result;
}
}
建立好每個運算類後,建立工廠類依據不同的情況,産生不同的運算對象。
//工廠類
public class OperationFactory {
//傳入字元擷取相對應的對象
public static OperationAbst createOperate(String operate) {
OperationAbst oper=null;
switch(operate) {
case "+":
oper=new OperationAdd();
break;
case "-":
oper=new OperationSub();
break;
case "*":
oper=new OperationMul();
break;
case "/":
oper=new OperationDiv();
break;
}
return oper;
}
}
然後就是測試啦!!!
public class test {
public static void main(String[] args) {
OperationAbst oper=null;
oper=OperationFactory.createOperate("*");
oper.setNumberA(5);
oper.setNumberB(10);
System.out.println(oper.getResult());
}
}
這裡得出的結果是50.0。
這便是簡單工廠模式的案例了解。簡單工廠通過分裝、繼承、多态把程式的耦合降低,進而使得程式變得靈活,易修改,易複用。
偷懶的同學,源碼也會放于我的github中,友善大家學習。
github: https://github.com/Esort-Evil/ZznDesignModel
本内容可用于學習,讨論。如果看文本文感覺有所獲的話,可以三連一下,嘻嘻嘻!後續也會努力!。