天天看点

使用工厂方法实现加减乘除四则运算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.具体代码实现