天天看點

java自學-設計模式-簡單工廠模式

簡單工廠模式

java自學-設計模式-簡單工廠模式
開放-封閉原則:軟體實體包含類、子產品、函數等,它們都應該是可擴充的(開放),但本身不可修改(封閉)。

個人了解: 就是對外開放,對内封閉。多擴充,少修改。

簡單工廠方法:定義一個用于建立對象的接口,讓子類決定執行個體化哪一個類。

個人了解: 就是建立一個工廠類,由它産生你所需要的對象。

接下來依據一個簡單的案例來實作簡單工廠模式:設計一個簡單的控制台電腦。這個案例相信很多在校學生都成做過。

簡單說明: 簡單設計加減乘除等運算方式即可。

UML結構圖

java自學-設計模式-簡單工廠模式

開始碼上~~~由于代碼比較簡單就沒有全員打上注釋

//運算類
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

本内容可用于學習,讨論。如果看文本文感覺有所獲的話,可以三連一下,嘻嘻嘻!後續也會努力!。