天天看點

使用工廠方法實作加減乘除四則運算1.工廠方法簡單介紹2.UML類圖3.具體代碼實作

1.工廠方法簡單介紹

        工廠方法(Factory Method)是簡單工廠的進一步抽象。産品的核心工廠類被提升為一個抽象類,具體的工作交給子類實作。簡單工廠和工廠方法可以将其想象成一個小作坊和一個公司。簡單工廠就是相當于小作坊,工廠方法相當于公司。公司本身不負責具體的工作,全交由下屬工廠或者是作坊來負責。

2.UML類圖

使用工廠方法實作加減乘除四則運算1.工廠方法簡單介紹2.UML類圖3.具體代碼實作

其中Calculate和Factory為抽象類。

3.具體代碼實作

代碼:

/*
 * 名稱: 工廠方法實作
 * 功能: 利用工廠方法實作加減乘除四則運算的功能,将計算結果傳達到抽象工廠類,再下發到各加減乘除運算處理工廠來具體處理
 * */
import java.util.Scanner;

//--------------------------抽象計算類---------------------------------

abstract class Calculator								
{
	
	public abstract void calculate(float num1,float num2);//抽象一個計算方法
}

//------------------------具體實作計算類-------------------------------

class Addition extends Calculator					   	  //實作加法
{
	public void calculate(float num1,float num2)
	{
		System.out.println("num1+num2="+(num1+num2));
	}
}

class Substraction extends Calculator				     //實作減法
{
	public void calculate(float num1,float num2)
	{
		System.out.println("num1-num2="+(num1-num2));
	}
}

class Multiplication extends Calculator				 //實作乘法
{
	public void calculate(float num1,float num2)
	{
		System.out.println("num1*num2="+(num1*num2));
	}
}

class Division extends Calculator						//實作除法
{
	public void calculate(float num1,float num2)
	{
		if(num2==0) 
		{
			System.out.println("num2為0,無法執行除法計算");
		}
		else
			System.out.println("num1/num2="+(num1/num2));
		
	}
}

//--------------------------工廠類----------------------------------

abstract class Factory							     //抽象工廠類,負責對下面的工廠發号施令
{
    //抽象一個處理四則運算方法類,即為工廠類發出的指令	
    public abstract Calculator createCalculate(); 
}

//具體工廠類,實際處理四則運算

class AdditionFactory extends Factory				   //加法工廠類,負責處理加法運算
{
	public Calculator createCalculate()
	{
		return new Addition();
	}
}

class SubstractionFactory extends Factory				//減法工廠類,負責處理減法運算
{
	public Calculator createCalculate()
	{
		return new Substraction();
	}
}

class MultiplicationFactory extends Factory				//乘法工廠類,負責處理乘法運算
{
	public Calculator createCalculate()
	{
		return new Multiplication();
	}
}

class DivisionFactory extends Factory					//除法工廠類,負責處理除法運算
{
	public Calculator createCalculate()
	{
		return new Division();
	}
}

//--------------------------用戶端-----------------------------------

public class FactoryMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		System.out.print("請輸入num1=");
		float num1=sc.nextFloat();									//輸入num1的值
		System.out.print("請輸入num2=");
		float num2=sc.nextFloat();									//輸入num2的值
		
		System.out.println("四則運算結果如下:");
		
		//執行加法運算
		Calculator calculateAdd =new Addition();						//定義加法運算類
		Factory factoryAdd=new AdditionFactory();						//定義加法工廠
		calculateAdd.calculate(num1, num2);
		factoryAdd.createCalculate();
		
		//執行減法運算
		Calculator calculateSub =new Substraction();					//定義減法運算類
		Factory factorySub=new SubstractionFactory();					//定義減法工廠
		calculateSub.calculate(num1, num2);
		factorySub.createCalculate();
		
		//執行乘法運算
		Calculator calculateMul =new Multiplication();					//定義乘法運算類
		Factory factoryMul=new MultiplicationFactory();					//定義乘法工廠
		calculateMul.calculate(num1, num2);
		factoryMul.createCalculate();
		
		//執行除法運算
		Calculator calculateDiv =new Division();						//定義除法運算類
		Factory factoryDiv=new DivisionFactory();						//定義除法工廠
		calculateDiv.calculate(num1, num2);
		factoryDiv.createCalculate();
		
		sc.close();
	}

}
           

運作結果:

使用工廠方法實作加減乘除四則運算1.工廠方法簡單介紹2.UML類圖3.具體代碼實作